Lokale PChar-Variable zurückgeben

Aus RAD Studio
Wechseln zu: Navigation, Suche

Nach oben zu Konvertierungen von String in PChar


Ein häufiger Fehler bei der Arbeit mit PChar ist das Speichern einer lokalen Variablen in einer Datenstruktur bzw. die Rückgabe als Wert. Sobald die Routine beendet wird, ist der PChar nicht mehr verfügbar, da es sich nur um einen Zeiger auf eine Speicheradresse handelt, nicht um eine von der Referenzzählung berücksichtigte Kopie des Strings. Beispiel:

 function title(n: Integer): PChar;
 var
   s: string;
 begin
   s := Format('title - %d', [n]);
   Result := PChar(s); // FEHLER
 end;

In diesem Beispiel wird ein Zeiger auf String-Daten zurückgegeben, die bei Beendigung der Funktion title freigegeben werden.

Siehe auch