Delphi-Quellcode:
// Commandline Parameter auswerten
if ParamCount > 0 then
begin
StartParams := '';
for Params := 1 to ParamCount do
StartParams := StartParams + ' ' + ParamStr(Params);
pName := PWideChar(StartParams);
CopyDataStruct.dwData := 0;
CopyDataStruct.cbData := (StrLen(pName) + 1) * sizeof(Char);
CopyDataStruct.lpData := pName;
SendMessage(Prop.MainHandle, WM_COPYDATA, 0, integer(@CopyDataStruct));
end;
Wie ist StartParams deklariert?
Ich hoffe als WideString oder UnicodeString, wegen PWideChar und nicht PChar.
Und pName ist auch ein PWideChar?
Warum SizeOf(Char) und nicht SizeOf(WideChar) obwohl es doch PWideChar ist.
Genauso warum StrLen und nicht StrLenW, wenn man WideChar und nicht Char verwendet.
Und warum der böse Integer-Case beim SendMessage?
Schonmal was von 64 Bit gehört?
WPARAM, LPARAM und LRESULT sind die korrekten Typen.
Das ist so ein Code, der nur noch knallen kann, wenn er in einem Nicht-
Unicode-Delpho oder in FreePascal genutzt wird,
und unter 64 Bit bereitet er einem auch nur noch Freude.