AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Thema durchsuchen
Ansicht
Themen-Optionen

String in ein PAnsiChar?

Ein Thema von milos · begonnen am 21. Sep 2013 · letzter Beitrag vom 23. Sep 2013
Antwort Antwort
Benutzerbild von milos
milos

Registriert seit: 14. Jul 2008
Ort: Bern (CH)
509 Beiträge
 
Delphi 11 Alexandria
 
#1

String in ein PAnsiChar?

  Alt 21. Sep 2013, 23:16
Hallo,
ich benutze für eine Anwendung die Bibliothek LibXL zum auslesen der Excel Tabellen. (Oder würde es gerne...)

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 Dokumentation von LibXL.

Wenn ich die Methode so schreibe
WorkBook.Load('Datei.xls'); funktioniert es ohne Probleme.

Aber sobald ich es jetzt zum Beispiel von
FileOpenDialog.FileName; oder einem anderen String oder AnsiString hole funktioniert es nicht.
Auch wenn ich
PAnsiChar(FileOpenDialog.FileName); mache geht es nicht, denn ich bekomme dann ja logischerweise nur ein Zeichen.

Kann mir einer weiterhelfen?

MfG
Milos
  Mit Zitat antworten Zitat
Benutzerbild von jaenicke
jaenicke

Registriert seit: 10. Jun 2003
Ort: Berlin
9.648 Beiträge
 
Delphi 11 Alexandria
 
#2

AW: String in ein PAnsiChar?

  Alt 21. Sep 2013, 23:49
Du musst zuerst in einen AnsiString umwandeln und dann in einen PAnsiChar:
Delphi-Quellcode:
PAnsiChar(AnsiString(FileOpenDialog.FileName))
.
(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)
Sebastian Jänicke
AppCentral
  Mit Zitat antworten Zitat
Benutzerbild von milos
milos

Registriert seit: 14. Jul 2008
Ort: Bern (CH)
509 Beiträge
 
Delphi 11 Alexandria
 
#3

AW: String in ein PAnsiChar?

  Alt 22. Sep 2013, 00:53
Vielen dank, so funktioniert es perfekt!
Gibt es dafür eine Erklärung? o_O

MfG
Milos
  Mit Zitat antworten Zitat
Benutzerbild von jaenicke
jaenicke

Registriert seit: 10. Jun 2003
Ort: Berlin
9.648 Beiträge
 
Delphi 11 Alexandria
 
#4

AW: String in ein PAnsiChar?

  Alt 22. Sep 2013, 09:36
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:

ansicast.png

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;
Sebastian Jänicke
AppCentral
  Mit Zitat antworten Zitat
Benutzerbild von milos
milos

Registriert seit: 14. Jul 2008
Ort: Bern (CH)
509 Beiträge
 
Delphi 11 Alexandria
 
#5

AW: String in ein PAnsiChar?

  Alt 23. Sep 2013, 18:12
Ahhh ok ^^
Danke für die erklärung, nun vergess ich es bestimmt nicht mehr ^^

MfG
Milos
  Mit Zitat antworten Zitat
Antwort Antwort


Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 22:53 Uhr.
Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz