Registriert seit: 9. Jul 2004
Ort: Aken (Anhalt-Bitterfeld)
1.335 Beiträge
Delphi XE5 Professional
|
AW: TcpClient - Antwort XML unvollständig.
16. Jan 2011, 14:20
Delphi-Quellcode:
function TIdBuffer.IndexOf(const ABytes: TIdBytes; AStartPos: Integer): Integer;
var
i, j, LEnd, BytesLen: Integer;
LFound: Boolean;
begin
Result := -1;
// Dont search if it empty
if Size > 0 then begin
EIdException.IfTrue(Length(ABytes) = 0, RSBufferMissingTerminator);
EIdException.IfNotInRange(AStartPos, 0, Size - 1, RSBufferInvalidStartPos);
BytesLen := Length(ABytes);
LEnd := FHeadIndex + Size;
for i := FHeadIndex + AStartPos to LEnd - BytesLen do begin
LFound := True;
for j := 0 to BytesLen - 1 do begin
if i + j < LEnd then begin
if FBytes[i + j] <> ABytes[j] then begin
LFound := False;
Break;
end;
end
else
Break;
end;
if LFound then begin
Result := i - FHeadIndex;
if Result <> -1 then
Break;
end;
end;
end;
end;
Geändert in
Delphi-Quellcode:
function TIdBuffer.IndexOf(const ABytes: TIdBytes; AStartPos: Integer): Integer;
var
i, j, LEnd, BytesLen: Integer;
LFound: Boolean;
begin
Result := -1;
// Dont search if it empty
if Size > 0 then begin
EIdException.IfTrue(Length(ABytes) = 0, RSBufferMissingTerminator);
EIdException.IfNotInRange(AStartPos, 0, Size - 1, RSBufferInvalidStartPos);
BytesLen := Length(ABytes);
LEnd := FHeadIndex + Size;
for i := FHeadIndex + AStartPos to LEnd - BytesLen do begin
LFound := True;
for j := 0 to BytesLen - 1 do begin
{
* Beim letzten Zeichen des Buffer ist auf jeden Schluss.
}
if i + j < LEnd - 1 then begin
if FBytes[i + j] <> ABytes[j] then begin
LFound := False;
Break;
end;
end
else
Break;
end;
if LFound then begin
Result := i - FHeadIndex;
if Result <> -1 then
Break;
end;
end;
end;
end;
und es funktioniert.
Gruss Garfield
Ubuntu 22.04: Laz2.2.2/FPC3.2.2 - VirtBox6.1+W10: D7PE, DXE5Prof
|
|
Zitat
|