Thema: Delphi Stringumwandlung

Einzelnen Beitrag anzeigen

Berni68

Registriert seit: 9. Jan 2006
Ort: Villingen
162 Beiträge
 
Delphi XE5 Professional
 
#1

Stringumwandlung

  Alt 3. Jan 2010, 09:28
Hallo zusammen,

um Strings zwischen 2 Anwendungen auszutauschen verwende ich (Code aus der DP):
Sender:
WindowsNachrichtAn('Tx', 'x', '#TEXT#'); Empfänger:
Delphi-Quellcode:
procedure Tx.WMCopyData(var Msg:TWMCopyData) ;
var
  h: PChar;
begin
  h:= Msg.CopyDataStruct.lpData;
  Showmessage(h);
end;
wobei:
Delphi-Quellcode:
procedure WindowsNachrichtAn(Fensterklasse, Fenstername, Nachricht:string);
var
  CopyDataStruct: TCopyDataStruct;
  ReceiverHandle: THandle;
begin
  CopyDataStruct.dwData:= 0;
  CopyDataStruct.cbData:= 1 + Length(Nachricht);
  CopyDataStruct.lpData:= PChar(Nachricht);

// ReceiverHandle:= FindWindow(PChar(Fensterklasse),nil);
  ReceiverHandle:= FindWindow(PChar(Fensterklasse),PChar(Fenstername));
  if ReceiverHandle<>0 then begin
    SendMessage(ReceiverHandle, WM_COPYDATA, Longint(Handle), Longint(@copyDataStruct));
  end;
end;
Hat bisher unter XP und Delphi5 einwandfrei geklappt.

Mit Delphi10 und win7 erhalte ich für das Beispiel '#TEXT#'
im Showmessagefenster:
#TEX(viereck)(chinesisches Zeichen)
die Länge ist in Ordnung, nur die beiden letzten Zeichen kommen falsch an.

Weiss jemand woran das liegen könnte?
Bernhard
  Mit Zitat antworten Zitat