Доброй ночи уважаемые форумчане!!! Пишу программу, что-то наподобие базы данных, сама программа работает номально, а вот при сохранении результата в типизированный файл возникла проблама.
Сохранение происходит следующим образом:
procedure TForm1.N2Click(Sender: TObject); {save}
type
zapis=record
mas1:array[1..4,1..3] of string[20];
mas2:array[1..3,1..10] of integer;
kolvo_chel:integer;
flag:boolean;
end;
var
s:zapis;
f:file of zapis;
fname:string;
a,b:integer;
begin
savedialog1.InitialDir:=getcurrentdir;
SaveDialog1.Title:='Сохранить в файле';
SaveDialog1.Filter :='Файлы базы данных |*.bd';
SaveDialog1.DefaultExt:='bd';
if SaveDialog1.Execute then
begin
fname:=SaveDialog1.FileName;
AssignFile(f,fname);
Rewrite(f);
reset(f);
s.kolvo_chel:=stringgrid1.rowcount-2;
write(f,s);
for a:=1 to stringgrid1.RowCount-2 do
begin
for b:=1 to stringgrid1.ColCount-1 do
begin
s.mas1[b,a]:=stringgrid1.Cells[b,a];
write(f,s);
end;
end;
closefile(f);
end;
end;
Ошибка такая:
Проблема решена
Ты вылетаешь за пределы массива, неужели не видно? Смотри:
zapis=record
mas1:array[1..4,1..3] of string[20];
mas2:array[1..3,1..10] of integer;
kolvo_chel:integer;
flag:boolean;
end;
for a:=1 to stringgrid1.RowCount-2 do
begin
for b:=1 to stringgrid1.ColCount-1 do
begin
s.mas1[b,a]:=stringgrid1.Cells[b,a];
write(f,s);
end;
end;
Да Вы правы, в данном примере я вылетаю за пределы массива.
type
zapis=record
mas1:array[1..4,1..3] of string[20];
mas2:array[1..3,1..10] of integer;
kolvo_chel:integer;
flag:boolean;
end;
type
zapis=record
mas1:array[1..4,1..100] of string[20];
mas2:array[1..3,1..10] of integer;
kolvo_chel:integer;
flag:boolean;
end;
type
zapis=record
flag:boolean;
kolvo_chel:integer;
zapici:string[20];
vznoci:string[10];
data:string[2];
end;