![]() |
WM_COPYDATA von C++ nach Delphi
Hi,
meine C++ - Anwendung schickt per WM_COPYDATA einen String an eine Delphi Applikation. Leider funktioniert das nicht ganz. Die relevanten Codeausschnitte: Delphi:
Delphi-Quellcode:
C++:
type
TMyRecord = packed record b: Boolean; s: string[255]; end; PMyRecord = ^TMyRecord; procedure TLoggerForm.WMCopydata(var msg: TWMCopyData); var MyRecord: PMyRecord; b: Boolean; s: String; begin b := PMyRecord(msg.CopyDataStruct.lpData)^.b; s := PMyRecord(msg.CopyDataStruct.lpData)^.s; memo1.Lines.Add(s); // Daten auswerten/kopieren msg.Result := 1; // erhalt bestätigen end;
Code:
Wenn das C++-Proggie "Ein String" schickt, kommt "n String" an.
// In einer Klasse:
static void add(char *msg) { HWND logwindow = FindWindow("TLoggerForm", "LoggerForm"); if (logwindow == NULL) MessageBox(0, "mol", "mol", 0); COPYDATASTRUCT MyCDS; MYREC MyRec; StringCbCopy( MyRec.string, sizeof(MyRec.string), msg ); MyCDS.dwData = NULL; // function identifier MyCDS.cbData = sizeof( MyRec ); // size of data MyCDS.lpData = &MyRec; // data structure SendMessage( logwindow, WM_COPYDATA, (WPARAM)(HWND)NULL, (LPARAM) (LPVOID) &MyCDS ); } Wenn es " EinString EinString EinString EinString" sendet, kommt "EinString EinString EinString Ei" an. Ich glaube, dass es an der Umwandlung zwischen Delphi-Strings und nullterminierten Strings liegt. Aber müsste das Delphi nicht automatisch machen? mfg. Tubos |
Re: WM_COPYDATA von C++ nach Delphi
Ein C++ String ist was ganz anderes als ein DelphiString
mit folgender Quellcodezeile sagst du Delphi das LPData ein DelphiString ist was aber gar nicht der Fall ist (ein DelphiString ist ein Pointer auf Daten)
Delphi-Quellcode:
PMyRecord(msg.CopyDataStruct.lpData)^.s
|
Re: WM_COPYDATA von C++ nach Delphi
Verstehe.
Hab die Zeile folgendermaßen umgeändert:
Delphi-Quellcode:
und den unsinnigen Teil mit dem boolean (ohne nachzudenken aus einem Beispiel übernommen) gelöscht.
s := string(pansistring(msg.CopyDataStruct.lpData));
Jetzt haut alles hin, danke! |
Alle Zeitangaben in WEZ +1. Es ist jetzt 14:02 Uhr. |
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024-2025 by Thomas Breitkreuz