Lokale PChar-Variable zurückgeben
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.