![]() |
String in ein PAnsiChar?
Hallo,
ich benutze für eine Anwendung die Bibliothek ![]() Das Problem ist, dass ich bei der Methode zum laden der Excel Datei ein "PAnsiChar" als Argument benötige. Zum sehen ist das noch in der ![]() Wenn ich die Methode so schreibe
Delphi-Quellcode:
funktioniert es ohne Probleme.
WorkBook.Load('Datei.xls');
Aber sobald ich es jetzt zum Beispiel von
Delphi-Quellcode:
oder einem anderen String oder AnsiString hole funktioniert es nicht.
FileOpenDialog.FileName;
Auch wenn ich
Delphi-Quellcode:
mache geht es nicht, denn ich bekomme dann ja logischerweise nur ein Zeichen.
PAnsiChar(FileOpenDialog.FileName);
Kann mir einer weiterhelfen? MfG |
AW: String in ein PAnsiChar?
Du musst zuerst in einen AnsiString umwandeln und dann in einen PAnsiChar:
Delphi-Quellcode:
(es funktioniert aber meistens auch mit dem Cast wie du ihn hattest, weil das Delphi korrekt behandelt, Compiler Magic, aber besser ist das richtig auszuschreiben)
PAnsiChar(AnsiString(FileOpenDialog.FileName))
. |
AW: String in ein PAnsiChar?
Vielen dank, so funktioniert es perfekt!
Gibt es dafür eine Erklärung? o_O MfG |
AW: String in ein PAnsiChar?
Liste der Anhänge anzeigen (Anzahl: 1)
Wenn du schreibst PAnsiChar(), macht Delphi intern nicht immer einen reinen Cast, sprich es passiert beim Cast auf AnsiString auch eine entsprechende Umwandlung (Compiler Magic). Das passiert aber nicht (oder jedenfalls nicht immer, ich dachte das schon mal gesehen zu haben), wenn es schon ein AnsiString ist:
Anhang 39906 Die darin aufgerufenen Funktionen sehen so aus:
Delphi-Quellcode:
procedure _LStrFromUStr(var Dest: _AnsiStr; const Source: UnicodeString; CodePage: Word);
function _LStrToPChar(const S: _AnsiStr): _PAnsiChr; |
AW: String in ein PAnsiChar?
Ahhh ok ^^
Danke für die erklärung, nun vergess ich es bestimmt nicht mehr ^^ MfG |
Alle Zeitangaben in WEZ +1. Es ist jetzt 01:44 Uhr. |
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024-2025 by Thomas Breitkreuz