Вниз
Скачать: CL | DM;

TFileStream   Найти похожие ветки 

 
Вечно молодой ©   (2002-08-11 22:05) [0]

Здравствуйте!
Пишу функцию для сравнения двух файлов (по их содержанию). Она должна возвращать True, если файлы одинаковые, и False, если они неодинаковые или возникла ошибка. Сейчас она выглядит так:

function IsDuplicates (FileName1, FileName2 : String) : Boolean;
const
BufferSize = 16384;
var
i : LongInt;
BytesCount1 : Integer;
BytesCount2 : Integer;
FileStream1 : TFileStream;
FileStream2 : TFileStream;
Buffer1 : PByteArray;
Buffer2 : PByteArray;
begin
Result := True;
try { Пытаемся создать первый поток }
FileStream1 := TFileStream.Create (FileName1, fmShareDenyNone);
except { Не удалось создать первый поток }
Result := False;
Exit;
end;
try { Пытаемся создать второй поток }
FileStream2 := TFileStream.Create (FileName2, fmShareDenyNone);
except { Не удалось создать второй поток}
Result := False;
FileStream1.Free;
Exit;
end;
GetMem (Buffer1, BufferSize);
GetMem (Buffer2, BufferSize);
try
if FileStream1.Size <> FileStream2.Size then
Result := False { Потоки не совпадают, поскольку имеют разные размеры }
else

while (FileStream1.Size > FileStream1.Position) and Result do
begin
BytesCount1 := FileStream1.Read (Buffer1^, BufferSize);
BytesCount2 := FileStream2.Read (Buffer2^, BufferSize);
if (BytesCount1 = BytesCount2) then
begin
for i := 0 to BytesCount1 - 1 do
if Buffer1^ [i] <> Buffer2^ [i] then { Байты не совпали }
begin
Result := False;
Break;
end;
end
else
begin { BytesCount1 <> BytesCount2 }
Result := False;
Break;
end;
end; // While
except
Result := False;
end;
{ Уничтожаем потоки, освобождаем память }
FileStream1.Free;
FileStream2.Free;
FreeMem (Buffer1, BufferSize);
FreeMem (Buffer2, BufferSize);
end;


Вопрос такой : в выделенной строке оставить всё как есть или поменять знак ">" на ">="?


 
TTCustomDelphiMaster ©   (2002-08-11 22:45) [1]

F1 - CompareMem
Полезная функция.


 
Вечно молодой ©   (2002-08-12 10:07) [2]

> TTCustomDelphiMaster

Всё гениальное просто. Спасибо.



Страницы: 1 вся ветка

Скачать: CL | DM;



Память: 0.45 MB
Время: 0.012 c
3-71033
NDR
2002-08-01 08:08
2002.08.22
!!! oemtoansistr = С чем его едят ? =)


1-71145
wassil
2002-08-13 14:01
2002.08.22
Архив из Delphi


3-71049
Big_Rom
2002-07-30 13:32
2002.08.22
Ну просто тупой запрос а сколько времени экономит


1-71221
^Sanya
2002-08-11 09:37
2002.08.22
Search in Delphi.


3-70988
Egor111
2002-07-31 09:37
2002.08.22
Помогите по Access




   Наверх