Returning a PChar Local Variable
Go Up to String to PChar Conversions
A common error when working with PChar is to store a local variable in a data structure, or return it as a value. When your routine ends, the PChar
disappears because it is a pointer to memory, and not a reference counted copy of the string. For example:
function title(n: Integer): PChar;
var
s: string;
begin
s := Format('title - %d', [n]);
Result := PChar(s); // DON'T DO THIS
end;
This example returns a pointer to string data that is freed when the title
function returns.