Многие используют в своих проектах 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 мы поговорим уже в качестве хранения данных — текстовые файлы.

Исходники статьи качаем тут

Автор статьи - Andrey53

Метки: , ,




К записи “Сохранение информации из TStringGrid. Часть 1” оставлено комментариев: 2.

  1. Александр:

    Хорошая статья!

  2. Светлана:

    Заранее прошу прощения если это мое недопонимание, но скажите пожалуйста, а почему данные в StringGrid при запуске программы не вписываются в соответствующие поля?
    Мне нужно чтобы было 2 строки, которые называются X и Y, а в них записываются данные типа double, которые потом помещаются в типизированный файл. С которого можно будет с помощью StringGrid2 считать эти данные.

Оставить комментарий

Вы можете использовать следующие теги:

*