Программа должна сравнивать два файла и формировать текстовый файл найденных о-личий.
Файлы сравниваются побайтно. Если два соответствующих байта не совпадают, то в вы-ходной файл выводится текстовая строка, содержащая адрес, а также значения байтов из обоих файлов в 16-ричном, десятичном и в символьном виде.
При различии размеров файлов пользователь выбирает из двух возможностей:
- не сравнивать файлы;
- сравнивать до конца более короткого файла, оставшийся остаток считать отличием и вывести в выходной файл.
Начало заложил

но вот "Если два соответствующих байта не совпадают, то в вы-ходной файл выводится текстовая строка, содержащая адрес, а также значения байтов из обоих файлов в 16-ричном, десятичном и в символьном виде." не могу найти как сделать???
Цитата:
procedure TForm1.Button1Click(Sender: TObject);
var
File1, File2: string;
S1, S2: TStream;
I, R: Integer;
buttonSelected : Integer;
Val1, Val2: Byte;
begin
File1:='d:\primer1.txt';
File2:='d:\primer2.txt';
S1 := TFileStream.Create(File1, fmOpenRead or fmShareDenyNone);
S2 := TFileStream.Create(File2, fmOpenRead or fmShareDenyNone);
R:= S1.Size;
if S1.Size <> S2.Size then
begin
buttonSelected := MessageDlg('Файлы отличаются по размеру!'+#13#10+
'Сравнивать до конца короткого файла?',mtCustom,[mbYes,mbNo], 0);
if buttonSelected = mrYes then
begin
if S1.Size > S2.Size then R:=S2.Size else R:=S1.Size
end;
if buttonSelected = mrNo then Exit;
end;
for I := 0 to R - 1 do
begin
S1.Position := I;
S1.Read(PByte(@Val1)^, SizeOf(Val1));
S2.Position := I;
S2.Read(PByte(@Val2)^, SizeOf(Val2));
if Val1 <> Val2 then
begin
???
end;
end;
S1.Free;
S2.Free;
end;
|