Einzelnen Beitrag anzeigen

Benutzerbild von himitsu
himitsu

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

AW: Comandline und WM_COPYDATA

  Alt 4. Nov 2017, 18:15
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.
Neuste Erkenntnis:
Seit Pos einen dritten Parameter hat,
wird PoSex im Delphi viel seltener praktiziert.
  Mit Zitat antworten Zitat