Jupp, D7 nutzt
Ansi (AnsiString und PAnsiChar) und D2010
Unicode (UnicodeString und PWideChar)
Delphi-Quellcode:
procedure WindowsNachrichtAn(Fensterklasse, Fenstername, Nachricht: WideString);
var
CopyDataStruct: TCopyDataStruct;
ReceiverHandle: THandle;
begin
CopyDataStruct.dwData:= 0;
CopyDataStruct.cbData:= (Length(Nachricht) + 1) * 2;
CopyDataStruct.lpData:= PWideChar(Nachricht);
PWideChar(Msg.CopyDataStruct.lpData)
oder
Delphi-Quellcode:
procedure WindowsNachrichtAn(Fensterklasse, Fenstername, Nachricht: AnsiString);
var
CopyDataStruct: TCopyDataStruct;
ReceiverHandle: THandle;
begin
CopyDataStruct.dwData:= 0;
CopyDataStruct.cbData:= Length(Nachricht) + 1;
CopyDataStruct.lpData:= PAnsiChar(Nachricht);
PAnsiChar(Msg.CopyDataStruct.lpData)
aus genau diesem Grund nutzt man für programmexternen Datenaustausch und Datenspeicherung nur statische Typen ... kein Integer, Cardinal, String, PChar und wenn Records, dann nur packed.