Многие используют в своих проектах TStringGrid и хотят сохранять данные из него в файл и загружать данные из файла, что логично, так как просто сохранения думаю не сильно имело бы смысла. Так вот предлагаю следующие варианты сохранения данных компонента TStringGrid в файл:
- типизированный файл
- текстовый файл
В данной статье мы рассмотрим как сохранить данные в типизированный файл, у нас будет структура всего с несколькими полями value типа string, ccount — количество столбцов, rcount — количество строк. Данное поле будет хранить значение каждой ячейки компонента TStringGrid и в цикле мы будем каждую ячейку записывать в файл, а считывать будем в цикле устанавливая указатель в файле на каждую компоненту.
Вот какая у меня получилась структура
Type
TStr=record
ccount:integer;
rcount:integer;
value:string[255];
end;
На событие формы OnCreate нам всетаки как никак необходимо создать наш будущий файл, в которой и будет храниться вся информация, либо сразу на кнопку сохранения создать и записать данные файла, что я и делаю
procedure TForm1.Button1Click(Sender: TObject);
var
F:File of TStr;
i,j:integer;
Str:TStr;
begin
try
AssignFile(F,'test.dat');
Rewrite(F);
Str.ccount:=StringGrid1.ColCount;
Str.rcount:=StringGrid1.RowCount;
for i:=0 to StringGrid1.RowCount-1 do
begin
for j:=0 to StringGrid1.ColCount-1 do
begin
Str.value:=StringGrid1.Cells[j,i];
Write(F,Str);
end;
end;
CloseFile(F);
except
on e:Exception do
end;
end;
На открытие файла я написал следующий код
procedure TForm1.Button2Click(Sender: TObject);
var
i,j,n,m,kk:integer;
F:File of TStr;
begin
try
kk:=0;
AssignFile(F,'test.dat');
Reset(F);
Seek(F,0);
Read(F,Str);
n:=Str.rcount;
m:=Str.ccount;
StringGrid1.RowCount:=n;
StringGrid1.ColCount:=m;
for i:=0 to n-1 do
begin
for j:=0 to m-1 do
begin
Seek(F,kk);
Read(F,Str);
StringGrid1.Cells[j,i]:=Str.value;
inc(kk);
end;
end;
CloseFile(F);
except
on e:Exception do
end;
end;
Как видите все что выше и сказал, все делаю тут программно. Многие функции по работе с файлами Вам уже знакомы, поэтому пояснять не буду сильно. Я немного усовершенствовал программку, сделал изменение количество строк, столбцов, в общем у меня работает на УРА. А в следующей статье про сохранение данных из TStringGrid мы поговорим уже в качестве хранения данных — текстовые файлы.