![]() |
Streams vergleichen
Folgende Funktion vergleicht zwei Streams und liefert TRUE bei Gleichheit und FALSE bei Unterschieden.
Die Daten werden in Blöcken à 8 kb gelesen und im Speicher verglichen.
Delphi-Quellcode:
{**************************************************************************
* NAME: CompareStreams * DESC: Vergleicht den Inhalt 2er Streams * PARAMS: [-] * RESULT: True => Inhalt gleich, False => Inhalt verschieden * CREATED: 08-11-2004/shmia *************************************************************************} function CompareStreams(const A, B : TStream): Boolean; const BUFSIZE = 8192; var bufA, bufB : string; r : Integer; begin if A.Size <> B.Size then Result := False else begin A.Position := 0; B.Position := 0; SetLength(bufA, BUFSIZE); SetLength(bufB, BUFSIZE); while A.Position < A.Size do begin r := A.Size - A.Position; // da die Properties [TStream].Size & .Position ab Delphi 6 // als Int64 deklariert sind, könnte ein Überlauf im Integer "r" auftreten. // dies wird berücksichtigt durch "r<=0" if (r > BUFSIZE) or (r<=0) then r := BUFSIZE; A.ReadBuffer(bufA[1], r); B.ReadBuffer(bufB[1], r); if not CompareMem(PChar(bufA), PChar(bufB), r) then begin Result := False; Exit; end; end; Result := True; end; end; |
Alle Zeitangaben in WEZ +1. Es ist jetzt 17:30 Uhr. |
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024-2025 by Thomas Breitkreuz