В первой части статье по сохранение информации из TStringGrid в файл и считывание из файла в TStringGrid мы узнали как можно в типизированные фалах хранить информацию. Теперь давайте посмотрим как можно сохранить информацию в текстовый файл и считать из него данную информацию в TStringGrid. Тут может для кого-то и посложнее будет по сравнению с первым вариантом, так как в текстовом файле мы будет сохранять построчно информацию и наши данные необходимо разделить как-то, я использовал пробелы, но это менее быстрый вариант поэтому каждую ячейку записываем в каждую строку нашего текстового файла. Мы поступим так, в первую строку нашего текстового файла мы запишем количество строк и столбцов нашего TStringGrid, разделив их знаком «+«. Далее в цикле в каждую строку мы будем записывать значение каждой ячейки. При считывании информации, мы сразу считаем количество строк и столбцов, пропарсим наши данные (чтобы получить количество строк и столбцов, это мы умеем уже, правда?). И просто организуем цикл, как считаем количество столбцов и строк и будем считывать каждую строку и отображать их в TStringGrid.

На форме у меня

  • TStringGrid
  • TButton — 2 шт (для сохранения и считывания)

Далее на сохранение я пишу следующий код

procedure TForm1.Button1Click(Sender: TObject);
var
F:TextFile;
value:WideString;
i,j:integer;
begin
try
AssignFile(F,'test.txt');
Rewrite(F);
value:='';
value:=IntToStr(StringGrid1.RowCount)+'+'+IntToStr(StringGrid1.ColCount);
Write(F,value);
for i:=0 to StringGrid1.RowCount-1 do
begin
value:='';
for j:=0 to StringGrid1.ColCount-1 do
begin
value:=StringGrid1.Cells[j,i];
WriteLn(F,value);
end;
end;
CloseFile(F);
except
on e:Exception do
end;
end;

Думаю тут все понятно, создаем файл — test.txt (функции и процедуры по созданию файлов я рассказывал), далее получаем количество строк и столбцов и разделяем их знаком «+» записываем в первую строку, а далее в цикле в каждую строку записываем наше значение. Ничего тут сложного нету как видите, теперь считываем из этого файла, на событие OnClick кнопки «Открыть» я написал следующий код

procedure TForm1.Button2Click(Sender: TObject);
var
ar_value:array[1..100] of string;
i,j,n,m,k,l:integer;
value,value2:WideString;
F:TextFile;
begin
try
k:=0;
AssignFile(F,'test.txt');
Reset(F);
l:=0;
Read(F,value);
value2:=copy(value,1,pos('+',value)-1);
n:=StrToInt(value2);
Delete(value,1,pos('+',value));
m:=StrToInt(value);
for i:=0 to n-1 do
begin
for j:=0 to m-1 do
begin
ReadLn(F,value);
StringGrid1.Cells[j,i]:=value;
end;
end;
CloseFile(F);
except
on e:Exception do
end;
end;

Как видите сперва мы считываем значение из 1-й строки и парсим ее, получаем при это количество столбцов и строк, затем организовываем цикл и в этом цикле считываем значения из файла с помощью ReadLn и записываем в каждую ячейку нашего TStringGrid. Далее я расскажу как сохранить и считать данные TStringGrid, используя при этом файл — ini. А на этом все.

Хочу сказать, что каждый человек должен хотя бы раз в год съездить на отдых. Самый лучший отдых — это семейный, когда едете отдыхать со своими близкими. А семейный отдых в анапе сделает его еще лучше в несколько раз. Вы сможете ходить на различные развлечения, процедуры, а главное очень здоровое и правильно питание. Отдыхайте как можно чаще!!!

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

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

Метки: , ,




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

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

Вы можете использовать следующие теги: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <strike> <strong>

*