Um nicht alles erklären zu müssen:
https://forums.codegear.com/thread.jspa?messageID=70567
Dort wird auch eine Lösung beschrieben, jedoch seinen gesamten Quelltext alter Projekte deshalb zu ändern ist nicht gerade produktiv. Daher könnte man die ScktComp.pas so anpassen, dass Strings von vorne herein gleich richtig konvertiert werden.
Edit: ReceiveText z.B. ist kaputt, in der ScktComp-
Unit sieht die Funktion so aus:
Delphi-Quellcode:
function TCustomWinSocket.ReceiveText: string;
begin
SetLength(Result, ReceiveBuf(Pointer(nil)^, -1));
SetLength(Result, ReceiveBuf(Pointer(Result)^, Length(Result)));
end;
Ich müsste also zuerst mit ReceiveBuf das Empfangene einlesen, dann in einen AnsiString schreiben und den dann in
Unicode konvertieren...
Könnte das danach so aussehen? Stimmt der Code dann auch?
Delphi-Quellcode:
function TCustomWinSocket.ReceiveText: string;
var S: AnsiString;
begin
SetLength(S, ReceiveBuf(Pointer(nil)^, -1));
SetLength(S, ReceiveBuf(Pointer(S)^, Length(S)));
Result := String(S);
end;
Ok, wahrscheinlich sind noch mehr Funktionen bisschen verbuggt, nur weiß ich nicht welche...