Thema: Delphi String 2 PChar ?

Einzelnen Beitrag anzeigen

Christian Seehase
(Co-Admin)

Registriert seit: 29. Mai 2002
Ort: Hamburg
11.106 Beiträge
 
Delphi 11 Alexandria
 
#7
  Alt 9. Okt 2002, 13:01
Moin Sakura,

die Variante mit @...[1] funktioniert immer, da Delphi einen String automatisch mit #00 beendet.

Ich hab's jetzt auch einmal mit GetTempPath ausprobiert: Kein Problem.

Allerdings hatte mich das Ergebnis doch verblüfft.
Zuerst hatte ich an ein Problem mit der Implementation von GetTempPath durch Borland gedacht, und mir die Funktion noch einmal selber importiert. Ergebnis: Es trat das gleiche Problem auf.

Daraufhin habe ich mir das Ganze mal im CPU Fenster angesehen. In der PChar-Variante wird LStrToPChar aufgerufen, was dann dafür sorgt, dass String1 und String2 den gleichen Wert bekommen, in der @..[1]-Version hingegen, wird, an der gleichen Stelle, UniqueString aufgerufen.
Als ich dann mal einen kleinen Blick in die Hilfe zu UniqueString geworfen hatte, kam ich zu dem Schluss, künftig auf die Parameterübergabe, im Zusammenhang mit API's auf PChar zu verzichten, falls ich denn eine String Variable übergeben will
Die @..[1] Variante ist wohl die einzig Richtige, zumindest, wenn man nicht selber zusätzlich UniqueString aufrufen will.
Ein Problem wird's allerdings erst, wenn, wie Motzi sagte, die Funktion etwas in den String schreiben muss.
Tschüss Chris
Die drei Feinde des Programmierers: Sonne, Frischluft und dieses unerträgliche Gebrüll der Vögel.
Der Klügere gibt solange nach bis er der Dumme ist
  Mit Zitat antworten Zitat