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.
Ein Therapeut entspricht 1024 Gigapeut.