Сохранение информации из TStringGrid. Часть 2

4 минуты на чтение

В первой части статье по сохранение информации из 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. А на этом все.

Facebook Vk Ok Twitter LinkedIn Telegram

Похожие записи:

Ну что, в первой части и во второй части статей, про сохранение данных TStringGrid в файлы и открытие из файла данных, с последующей загрузкой их в TStringGrid, мы поговорили о сохранение и считывание данных из типизированного файла, а также сохранение и считы...
Многие используют в своих проектах TStringGrid и хотят сохранять данные из него в файл и загружать данные из файла, что логично, так как просто сохранения думаю не сильно имело бы смысла. Так вот предлагаю следующие варианты сохранения данных компонента TStrin...
Итак, в этой статье хотел бы поговорить как поменять строки местами в TStringGrid. Задача очень простая, но может кому-то для «лабораторок» пригодится, так многим эта задача не будет совсем тяжелой. Давайте посмотрим так, TStringGrid - этот та же самая матрица...