Einzelnen Beitrag anzeigen

Benutzerbild von Zacherl
Zacherl

Registriert seit: 3. Sep 2004
4.629 Beiträge
 
Delphi 10.2 Tokyo Starter
 
#16

AW: Record New/Dispose resultiert in MemoryLeaks

  Alt 8. Nov 2017, 00:44
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.
Projekte:
- GitHub (Profil, zyantific)
- zYan Disassembler Engine ( Zydis Online, Zydis GitHub)

Geändert von Zacherl ( 8. Nov 2017 um 00:47 Uhr)
  Mit Zitat antworten Zitat