var
f_in: file of byte;
f_out: file;
symb, bbyte: byte;
i: integer;
addr, a_ch, f_pos: longint;
buf: array [0..$0F] of byte;
label
Next, Exit_all;
begin
assign(f_in,'in.bin');
assign(f_out,'out.bin');
reset(f_in);
if IOResult<>0
then goto Exit_all;
rewrite(f_out,16);
if IOResult<>0
then goto Exit_all;
addr:=0;
Next:
a_ch:=$FFFFFFFF;
f_pos:=filepos(f_in);
for i:=0 to 7 do
begin
read(f_in,symb);
if IOResult<>0
then goto Exit_all;
if ((symb>$2F) and (symb<$3A))
then symb:=symb-$30
else if ((symb>$40) and (symb<$47))
then symb:=symb-$37
else goto Next;
a_ch:=(a_ch shl 4) or symb;
end;
if a_ch<>addr
then
begin
seek(f_in,f_pos+1);
goto Next;
end;
read(f_in,symb);
read(f_in,symb);
for i:=0 to $0F do
begin
bbyte:=0;
read(f_in,symb);
if ((symb>$2F) and (symb<$3A))
then symb:=symb-$30
else if ((symb>$40) and (symb<$47))
then symb:=symb-$37
else goto Exit_all;
bbyte:=(bbyte shl 4) or symb;
read(f_in,symb);
if ((symb>$2F) and (symb<$3A))
then symb:=symb-$30
else if ((symb>$40) and (symb<$47))
then symb:=symb-$37
else goto Exit_all;
bbyte:=(bbyte shl 4) or symb;
read(f_in,symb);
buf[i]:=bbyte;
end;
blockwrite(f_out,buf,1);
addr:=addr+$10;
goto Next;
Exit_all:
close(f_in);
close(f_out);
end.
Пасквиль.
Входной файл - in.bin, выходной файл - out.bin.
А программатору, который сливает в файл такой мусор, нужно было еще во младенчестве засунуть паяльник на 100 Вт поглубже и провернуть. Задача бы решалась намного проще, если хотя бы чистые бинарные данные (которые там тоже присутствуют) не разбавлялись случайными переводами каретки (т.е. вместо 0A --> 0D 0A).
Пасквиль.
Входной файл - in.bin, выходной файл - out.bin.
А программатору, который сливает в файл такой мусор, нужно было еще во младенчестве засунуть паяльник на 100 Вт поглубже и провернуть. Задача бы решалась намного проще, если хотя бы чистые бинарные данные (которые там тоже присутствуют) не разбавлялись случайными переводами каретки (т.е. вместо 0A --> 0D 0A).