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

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

Ну что, в первой части и во второй части статей, про сохранение данных TStringGrid в файлы и открытие из файла данных, с последующей загрузкой их в TStringGrid, мы поговорили о сохранение и считывание данных из типизированного файла, а также сохранение и считывание данных из текстового файла. Какой Вам метод понравился больше всего, а также какой файл Вам понравился больше всего выбирать Вам, но я Вам предложу еще один тип файлов — это ini-файл, который имеет свою структуру, и как мы уже говорили они чаще всего используются для сохранение настроек Вашей программы (приложения). Подробнее о данном типе файлов, Вы сможете прочитать тут, ну а мы продолжим дальше говорить о сохранение данных и их выгрузку. На форме у меня следующие компоненты

  • TButton - 3 шт
  • TStringGrid
  • TEdit - 2 шт (для изменения размера TStringGrid)

И не забываем подключить в Uses модуль IniFiles и объявить переменную типа TIniFile. У меня так Ini:TIniFile;

Итак как мы уже говорили в ini-файлах есть название раздела и имена переменных, так вот у нас будет один раздел, который я назвал TStringGrid и 2 основные переменные RowCount и ColCount, которые соответственно будут хранить количество строк и столбцов. Следующие переменные, которые будут хранить сами значения ячеек нашего TStringGrid. Они имеют вид Item+номер строки+номер столбца, эти все значения записываются в цикле, а считываются точно также, в цикле при этом в считываемой переменной мы указываем номер строки и номер столбца, в которую считать данные. Для записи я использую — WriteString, для чтения — ReadString.

На кнопку «сохранить» (событие OnClick) я написал следующий код

procedure TForm1.Button1Click(Sender: TObject);
var
 F:TextFile;
 i,j:integer;
begin
   try
    AssignFile(F,'test.ini');
    Rewrite(F);
    CloseFile(F);
    Ini:=TIniFile.Create(ExtractFilePath(ParamStr(0))+'test.ini');
    Ini.WriteInteger('TStringGrid','RowCount',StringGrid1.RowCount);
    Ini.WriteInteger('TStringGrid','ColCount',StringGrid1.ColCount);
    for i:=0 to StringGrid1.RowCount-1 do
     begin
      for j:=0 to StringGrid1.ColCount-1 do
       begin
        Ini.WriteString('TStringGrid','Item'+IntToStr(i)+IntToStr(j),StringGrid1.Cells[j,i]);
       end;
     end;
    Ini.Free;
   except
    on e:Exception do
   end;
end;

На кнопку «открыть» (событие OnClick) я написал следующий код

procedure TForm1.Button2Click(Sender: TObject);
var
 i,j,k,l,n,m:integer;
begin
   try
    k:=0;
    l:=0;
    Ini:=TIniFile.Create(ExtractFilePath(ParamStr(0))+'test.ini');
    n:=Ini.ReadInteger('TStringGrid','RowCount',0);
    m:=Ini.ReadInteger('TStringGrid','ColCount',0);
    StringGrid1.RowCount:=n;
    StringGrid1.ColCount:=m;
    for i:=0 to n-1 do
     begin
      for j:=0 to m-1 do
       begin
        StringGrid1.Cells[k,l]:=Ini.ReadString('TStringGrid','Item'+IntToStr(i)+IntToStr(j),'');
        inc(k);
       end;
       k:=0;
       inc(l);
     end;
   except
    on e:Exception do
   end;
end;

Этой статьей я хотел бы закончить цикл новостей для сохранение и считывания данных из TStringGrid, надеюсь найдете себе подходящий способ.

Facebook Vk Ok Twitter LinkedIn Telegram

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

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