Einzelnen Beitrag anzeigen

Benutzerbild von himitsu
himitsu

Registriert seit: 11. Okt 2003
Ort: Elbflorenz
44.071 Beiträge
 
Delphi 12 Athens
 
#4

AW: SendMessage überträgt String nicht zuverlässig

  Alt 13. Jun 2014, 16:49
Und dann wurde noch etwas ganz Wichtiges vergessen.

Am Ziel wird das als PChar ausgelesen, also muß dort auch zwingend das String-Ende mit übertragen werden.
copyDataStruct.cbData := (Length(Nachricht) + 1) * Sizeof(Char);

Alternativ muß man beim Auslesen des Textes die Länge (copyDataStruct.cbData) verwenden und darf eben nicht bis zum nichtübertragenen/fehlenden Stringende lesen.

Ach ja, wenn hier auch noch zwischen zwei Programmen übertragen wird, dann ist und was es schon immer FALSCH, wenn hier PChar verwendet wird, denn wenn ein Programm Unicode ist und das Andere nicht, dann hat man ein Problem.

Bei Datenübertragungen muß immer ein fest definiertes und unveränderliches Format verwendet werden, also hier entweder PAnsiChar oder PWideChar.
Oder man übergibt das Format mit und liest dann entsprechend aus.



PS: Ist HWND_BROADCAST hier nicht ein klein bissl gefährlich?
Man stelle sich mal vor ein anderes Programm empfängt und wertet ebenfalls WM_COPYDATA mit copyDataStruct.dwData=0 aus,
das wird da bestimmt kanllen, wenn es unverständliche/ungültige Daten empfängt.
Neuste Erkenntnis:
Seit Pos einen dritten Parameter hat,
wird PoSex im Delphi viel seltener praktiziert.

Geändert von himitsu (13. Jun 2014 um 16:57 Uhr)
  Mit Zitat antworten Zitat