Einzelnen Beitrag anzeigen

Benutzerbild von Uwe Raabe
Uwe Raabe

Registriert seit: 20. Jan 2006
Ort: Lübbecke
11.455 Beiträge
 
Delphi 12 Athens
 
#2

AW: Fehler E2250 Es gibt keine überladene Version von GetString ...

  Alt 6. Feb 2024, 12:30
Wie aus der Deklaration ersichtlich, erwartet GetString ein TBytes, also ein dynamisches Byte-Array. Dagegen ist TReadBuffer ein statisches Byte-Array.

Dein Code lässt sich auf folgendes reduzieren:
Delphi-Quellcode:
function TCustomWSocket.SocketRead(Socket: TSocket; Flag: integer): string;
var
  Received: longint;
  i: integer;
  bytes: TBytes;
begin
  Result:= '';
  Received:=0;

  if Received = SOCKET_ERROR then
    begin
      if WSAGetLastError <> WSAEWOULDBLOCK then
        SocketError(WSAGetLastError);
    end
  else
    if Received>0 then begin //05.11.10: Fix bei .SocketRead: bei Länge 0 gab es RangeError beim Zugriff auf Result[1]
      SetLength(bytes, Received);
      for i := 1 to Received do
        bytes[i-1] := FReadBuffer[i];
      Result := TEncoding.Default.GetString(bytes);
    end;
end;
Ich gehe mal davon aus, dass der eigentliche Receive-Code, der Received und FReadBuffer setzt, bewusst entfernt wurde.
Uwe Raabe
Certified Delphi Master Developer
Embarcadero MVP
Blog: The Art of Delphi Programming
  Mit Zitat antworten Zitat