Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2002.08.22;
Скачать: 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 вся ветка

Текущий архив: 2002.08.22;
Скачать: CL | DM;

Наверх




Память: 0.47 MB
Время: 0.019 c
1-71168
Daiz13
2002-08-13 16:38
2002.08.22
OnCloseQuery


4-71434
VDen
2002-06-13 12:45
2002.08.22
Обои на рабочий стол


3-71012
Boo
2002-07-31 23:16
2002.08.22
BLOB поля в MSSQL2000


3-71038
billybons
2002-07-31 09:44
2002.08.22
добавление записи в Grid


1-71256
Вечно молодой
2002-08-11 22:05
2002.08.22
TFileStream