Das mit dem 10.000-Limit wusste ich nicht.
Dann wäre es glaube ich das Beste, wenn ich das mit dem Record sein lasse und Strings stattdessen so mitschicke
PostMessage(receiver, command, wParam, LPARAM(PChar('string')));
Das klappt auch
ausschließlich mit String-Konstanten.
Im Falle von:
Delphi-Quellcode:
var
S: String;
begin
S := 'blabla';
PostMessage(receiver, command, wParam, LPARAM(PChar(@S[1])));
// ...
S := '123';
kannst du nie sicher sein, ob
S
noch
'blabla'
oder schon
'123'
enthält, wenn deine Nachricht bearbeitet wird. Selbes gillt natürlich für den Falle, dass der Thread den String in jeder Iteration modifiziert.
Ich kann dir nur nochmal raten von dem ganzen Message Gefummel zurück zu
TThread.Queue
zu wechseln. Da musst du dir weder um manuelle Speicherverwaltung, noch um irgendwelche Message-Queue Limits oder andere Edgecases Gedanken machen.