Ok, ich hab jetzt was gefunden! Nach längerem Rumprobieren hab ich mir überlegt, dass ich ja nicht WideString und AnsiString vergleichen muss, sondern den AnsiString ja wieder zurückkonvertieren kann und dann WideString und WideString vergleichen kann. (der direkte Vergleich zwischen WideString und AnsiString ging nicht, oder ich hab was falsch gemacht).
So habe ich jetzt jedenfalls folgenden Code, der mit dem Beispielstring von sx2008 geklappt hat:
Delphi-Quellcode:
var
W : Widestring;
S : String;
PW: PWideChar;
begin
W := 'Das Möbel müffelt mächtig '+#$2801;
S := WideCharToString(@W[1]);
GetMem(PW, Length(S)*2+1);
StringToWideChar(S, PW, Length(S)*2+1);
if W <> PW then ShowMessage('Problem bei Umwandlung');
FreeMem(PW);
end;
Was ich nur gern nochmal von jemandem bestätigt hätte ist, dass ich für einen PWideChar GetMem(PW, Length(AnsiString)*2+1) aufrufen muss.?
Irgendwie zieht es mich bei WideStrings immer dazu GetMem(...,...+2) zu reservieren...