Top.Mail.Ru
Мастера DELPHI, Delphi programming community Титульная страница Поиск, карта сайта Написать письмо 
| Новости | Поиск | FAQ | Статьи | Книги | Новости VCL |
| Форумы ЧАТ | Орешник | KOL и MCK |
Форумы -» Основная («Начинающим»)/ Базы / WinAPI / Компоненты / Сети / Media / Игры / Corba и COM / KOL / FreePascal / .Net / Прочее / RSDN.ORG

« предыдущая ветвь | форум | следующая ветвь »

сравнение 2-х TFileStream


Страницы:   1 2 3 4 5

Unknown1 ©   (2012-11-16 11:16:00) 

Как быстро сравнить?


Unknown1   (2012-11-16 11:34:00) [81]


> сравнить размеры, при совпадении прочитать данные поблочно
> да сравнить, а как ещё-то? потоки ничего больше не умеют,
>  только читать и писать.


Так вот:


function FilesAreEqual(const FileName1, FileName2: string): Boolean;
const
 BLOCK_SIZE = 65536;
var
 Buf1, Buf2: array[1..BLOCK_SIZE] of Byte;
 FS1, FS2: TFileStream;
 Len1, Len2: Integer;
begin
 Result := False;
 FS1 := TFileStream.Create(FileName1, fmOpenRead or fmShareDenyNone);
 try
   FS2 := TFileStream.Create(FileName2, fmOpenRead or fmShareDenyNone);
   try
     if FS1.Size <> FS2.Size then
       Exit;
     Len1 := FS1.Read(Buf1[1], BLOCK_SIZE);
     Len2 := FS2.Read(Buf2[1], BLOCK_SIZE);
     if Len1 <> Len2 then
       Exit;
     if not CompareMem(@Buf1[1], @Buf2[1], Len1) then
       Exit;
     Result := True;
   finally
     FS2.Free;
   end;
 finally
   FS1.Free;
 end;
end;


RWolf   (2012-11-16 11:21:00) [82]

сравнить размеры, при совпадении прочитать данные поблочно да сравнить, а как ещё-то? потоки ничего больше не умеют, только читать и писать.


Страницы:   1 2 3 4 5

Наверх

Титульная страница Поиск, карта сайта Написать письмо