Спасибо Алекс! Хоть я сделал не так всё, а более "тупо" - ты мне очень помог...
Я функцию перевода хекс числа не писал, а написал так:
procedure TForm1.BitBtn4Click(Sender: TObject);
var
Buf,Buf1: Byte;
H: file of Byte;
begin
if SaveDialog1.Execute then
begin
AssignFile(H, SaveDialog1.FileName);
Reset(H);
Seek(H, k); //нужное место в роме
for j := 0 to StringGrid1.RowCount - 1 do
for i := 0 to StringGrid1.ColCount - 1 do
begin
stop:=stop+1;//счётчик
if StringGrid1.Cells[i, j]='A' then save1:='10';
if StringGrid1.Cells[i, j]='B' then save1:='11';
if StringGrid1.Cells[i, j]='C' then save1:='12';
if StringGrid1.Cells[i, j]='D' then save1:='13';
if StringGrid1.Cells[i, j]='E' then save1:='14';
if StringGrid1.Cells[i, j]='F' then save1:='15';
if StringGrid1.Cells[i, j]='A' then save2:='10';
if StringGrid1.Cells[i, j]='B' then save2:='11';
if StringGrid1.Cells[i, j]='C' then save2:='12';
if StringGrid1.Cells[i, j]='D' then save2:='13';
if StringGrid1.Cells[i, j]='E' then save2:='14';
if StringGrid1.Cells[i, j]='F' then save2:='15';
if stop=1 then Buf1 := (StrToInt(save1));
if stop=2 then Buf := (Buf1*16+StrToInt(save2));//так как у меня первая часть числа в одной ячейке, а вторая - в следующей
if stop=2 then
BlockWrite(H, Buf, 1);
if stop=2 then save3:=0;//обнуление счётчика
end;
CloseFile(H);
end;
Отредактировано Guyver (2007-03-19 13:25:45)