Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Programmieren allgemein (https://www.delphipraxis.net/40-programmieren-allgemein/)
-   -   TWMCopyData Message verschicken. Emfangsproblem (https://www.delphipraxis.net/202739-twmcopydata-message-verschicken-emfangsproblem.html)

DieDolly 3. Dez 2019 21:48

TWMCopyData Message verschicken. Emfangsproblem
 
Innerhalb meines Programms möchte ich eine message verschicken. Ein MessageHandler, der auch für Messages von woanders zuständig ist, soll die entgegennehmen.

Sender und Empfänger sind dasselbe Programm. Die Message soll gesendet werden, ohne dass eine neue Instanz erstellt wird
Delphi-Quellcode:
// Button1
var
 msg: TWMCopyData;
begin
 msg.CopyDataStruct.cbData := (StrLen(PChar(Command)) + 1) * SizeOf(WideChar);
 msg.CopyDataStruct.lpData := PChar(Command);

 MyMessageHandler(msg);
end;
Delphi-Quellcode:
// MessageHandler
procedure MyMessageHandler(var msg: TWMCopyData);
var
 CommandList: string;
begin
 CommandList:= string(PChar(msg.CopyDataStruct.lpData));

 // Arbeite mit CommandList
end;
Wenn ich abc sende, kommt ab an. Was mache ich da falsch?

Luckie 3. Dez 2019 21:55

AW: TWMCopyData Message verschicken. Emfangsproblem
 
Du berechnest die Zeichenkettenlänge komisch. Du castest zu PChar multiplizierst aber mit Größe von WideChar. Müsstest du dann nicht auch zu PWideChar casten?

Uwe Raabe 3. Dez 2019 23:52

AW: TWMCopyData Message verschicken. Emfangsproblem
 
Seit Delphi 2009 ist
Delphi-Quellcode:
SizeOf(Char) = SizeOf(WideChar)

Uwe Raabe 3. Dez 2019 23:57

AW: TWMCopyData Message verschicken. Emfangsproblem
 
Der obige Code funktioniert in einem Minimalprogramm einwandfrei. Kannst du das mit einem Beispielprogramm nachstellen? Dann häng das doch bitte mal hier an.


Alle Zeitangaben in WEZ +1. Es ist jetzt 08:25 Uhr.

Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz