Wenn der PChar in einer lokalen string Variable gespeichert wird dann sollte dieser auch problemlos per Queue weitergegeben werden können.
Da bin ich mir nicht so sicher. Wenn du einen PChar nach dem TThread.Queue noch veränderst, wird ja in der Prozedur in der Schlange auch der veränderte Wert benutzt. Einfaches Beispiel:
Delphi-Quellcode:
procedure TTest.Execute;
var
a: PChar;
begin
a := PChar(DupeString('f', 30)); // um keine Konstante zu haben
TThread.Queue(nil, procedure
begin
ShowMessage(a); // fdsdfsd
end);
a := 'fdsdfsd';
end;
Wo da wirklich der Speicher freigegeben wird, wäre ich mir jetzt nicht so sicher...
(und ich habe grad keine Lust zu schauen
)