Delphi-PRAXiS
Seite 1 von 2  1 2      

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Object-Pascal / Delphi-Language (https://www.delphipraxis.net/32-object-pascal-delphi-language/)
-   -   Delphi String nach pAnsiChar casten (https://www.delphipraxis.net/114792-string-nach-pansichar-casten.html)

TheMiller 31. Mai 2008 14:41


String nach pAnsiChar casten
 
Hallo!

Ich habe einen String (SaveDialog1.Filename) und muss ihn nun in einen pAnsiChar umwandeln. Casten mit "pChar" klappt nicht. Habe schon ein bissl gegoogelt, aber finde keine Lösung.

Compiler sagt immer: Inkompatible Typen: 'String' und 'PAnsiChar'...

Danke im Voraus!

Nils_13 31. Mai 2008 14:45

Re: String nach pAnsiChar casten
 
Wie wäre es direkt mit PAnsiChar(String) ?

Fussball-Robby 31. Mai 2008 14:46

Re: String nach pAnsiChar casten
 
Delphi-Quellcode:
PAnsiChar(SaveDialog1.Filename);

Bernhard Geyer 31. Mai 2008 14:47

Re: String nach pAnsiChar casten
 
Evtl. mag ja der Compiler nicht wenn du direkt das Property verwendest.
Delphi-Quellcode:
var
  str: AnsiString;
begin
  str := SaveDialog1.Filename;
  myPAnsiChar := PAnsiChar(str);
end;
Gleich mit AnsiString statt String gearbeitet damit der Code auch in Delphi 2008 funktioniert (Stichwort Unicode) :-)

mkinzler 31. Mai 2008 14:49

Re: String nach pAnsiChar casten
 
Zitat:

Gleich mit AnsiString statt String gearbeitet damit der Code auch in Delphi 2008 funktioniert (Stichwort Unicode) Smile
Bist du da sicher?

TheMiller 31. Mai 2008 14:53

Re: String nach pAnsiChar casten
 
Egal welche der beiden Lösungsvorschläge ich benutze, die Meldung ändert sich nicht.

Bernhard Geyer 31. Mai 2008 14:54

Re: String nach pAnsiChar casten
 
Zitat:

Zitat von mkinzler
Zitat:

Gleich mit AnsiString statt String gearbeitet damit der Code auch in Delphi 2008 funktioniert (Stichwort Unicode) Smile
Bist du da sicher?

Sicher nicht, aber micht würde es wundern wenn es geht nachdem String = Unicodestring definiert ist. Außer es ist per Compilermagic beide Casts erlaubt.

Delphi-Quellcode:
var
  str: Unicodestring;
begin
  AnsiPointer := PAnsiChar(str);
  WidePointer := PWideChar(str);
end;

Fussball-Robby 31. Mai 2008 14:56

Re: String nach pAnsiChar casten
 
Zitat:

Zitat von DJ-SPM
Egal welche der beiden Lösungsvorschläge ich benutze, die Meldung ändert sich nicht.

Dann zeig mal ein bisschen Code, es solte nämlich normalerweise funktionieren.

TheMiller 31. Mai 2008 15:01

Re: String nach pAnsiChar casten
 
Ich habe ein Array, welches immer 2 Inhalte hat. Es ist folgendermaßen definiert:

Delphi-Quellcode:
commands: array[0..1] of pChar
Jetzt möchte ich Eintrag 0 mit einem dem Dateinamen von dem Savedialog füllen. Doch immer kommt diese Meldung. Sorry, aber mehr Code gibt es nicht. Das ist echt alles.

Delphi-Quellcode:
var
  filename: String;
  fname: pAnsiChar;
begin
  if (SaveDialog1.Execute) then
  begin
    filename:=SaveDialog1.Filename;
    fname:=pAnsiChar(filename);
  end;

  commands[0]:='[switches etc.] -f '+filename'; // v1

  bzw.

  commands[0]:='[switches etc.] -f '+filename'; // v2
Compiler sagt bei beiden Versionen, dass die Typen String und pAnsiChar inkompatibel sind.

Fussball-Robby 31. Mai 2008 15:08

Re: String nach pAnsiChar casten
 
Dein Vorgehen verstehe ich irgendwie nicht :gruebel: Zuerst den FileName in einen String, dann den String zu PAnsiChar casten und dann in ein Array of PAnsiChar einen String UND einen PAnsiChar packen.. Das geht ganz einfach so:
Delphi-Quellcode:
  if SaveDialog1.Execute then
    commands[0] := PAnsiChar('[switches etc.] -f ' + SaveDialog1.FileName);


Alle Zeitangaben in WEZ +1. Es ist jetzt 05:12 Uhr.
Seite 1 von 2  1 2      

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