Форум программистов, компьютерный форум, киберфорум
Наши страницы
Lazarus
Войти
Регистрация
Восстановить пароль
 
Zwelenewskiy
119 / 119 / 105
Регистрация: 09.01.2017
Сообщений: 1,165
Завершенные тесты: 1
#1

Сохранение таблицы в файл - Lazarus

04.04.2017, 21:18. Просмотров 528. Ответов 8
Метки нет (Все метки)

Доброго времени суток! Есть таблица, в есть как строчные данные,так и целочисленные (по-моему,тип неважен). Нужно сохранить все в файл, а затем загрузить из этого файла данные в эту таблицу
0
Лучшие ответы (1)
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
04.04.2017, 21:18
Я подобрал для вас темы с готовыми решениями и ответами на вопрос Сохранение таблицы в файл (Lazarus):

Сохранение таблицы в файл и её открытие
Нашёл код для Delphi для сохранения таблицы, преобразовал в Lazarus, но когда...

Сохранение таблицы с выбором пути
Нужно сохранить данные таблицы с выбором пути сохранения: SD.Title:=...

Сохранение таблицы StringGrid вместе с объектами
Доброго времени суток. Есть StringGrid с закрашенными ячейками. Как сохранить...

Сохранение в файл
unit Unit1; {$mode objfpc}{$H+} interface uses Classes, SysUtils,...

Сохранение в файл
Привет. Задача следующая сохранить дату первого запуска в файл, но так чтобы...

Сохранение в файл
Запросить температуру, артериальное давление пользователя и день прохождения....

8
volvo
Супер-модератор
Эксперт Pascal/DelphiАвтор FAQ
25624 / 17177 / 6830
Регистрация: 22.10.2011
Сообщений: 30,369
Записей в блоге: 6
04.04.2017, 21:26 #2
Что за таблица?
0
Zwelenewskiy
119 / 119 / 105
Регистрация: 09.01.2017
Сообщений: 1,165
Завершенные тесты: 1
04.04.2017, 22:18  [ТС] #3
volvo, не сказал - извините =) Stringgrid

Добавлено через 51 минуту
volvo, я имею в виду вот что: можно ли сделать так,чтобы после нажатия кнопки данные таблицы с формы сохранились в файл с такой же таблицей?
0
volvo
Супер-модератор
Эксперт Pascal/DelphiАвтор FAQ
25624 / 17177 / 6830
Регистрация: 22.10.2011
Сообщений: 30,369
Записей в блоге: 6
04.04.2017, 22:35 #4
Сохраняем:
Pascal
1
  StringGrid1.SaveToCSVFile('mygrid.txt', #9);
Читаем:
Pascal
1
  StringGrid1.LoadFromCSVFile('mygrid.txt', #9);
Вот так выглядит файл:
1
Миниатюры
Сохранение таблицы в файл  
SEREGIUS
0 / 0 / 0
Регистрация: 18.02.2017
Сообщений: 8
06.04.2017, 13:04 #5
А если на форме 5-10 мелких таблиц, как на фото, то можно их все сохранить в один файл и загрузить из одного файла?
0
volvo
Супер-модератор
Эксперт Pascal/DelphiАвтор FAQ
25624 / 17177 / 6830
Регистрация: 22.10.2011
Сообщений: 30,369
Записей в блоге: 6
06.04.2017, 13:39 #6
Можно, но только не в простой текстовый файл, а в INI, например:
Pascal
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
uses ..., IniFiles;
 
procedure TForm1.btnSaveClick(Sender: TObject);
 
  procedure SaveGrid(g : TStringGrid; title : string; ini : TIniFile);
  var ms : TMemoryStream;
  begin
    ms := TMemoryStream.Create;
    g.SaveToCSVStream(ms, #9);
    ini.WriteBinaryStream('grids', title, ms);
    ms.Free;
  end;
 
var
  ini : TIniFile;
begin
  ini := TIniFile.Create(ChangeFileExt(ParamStrUTF8(0), '.ini'));
  // Можно вообще по всеми гридам пройтись циклом, и сохранить их все сразу
  SaveGrid(StringGrid1, 'stringgrid1', ini);
  SaveGrid(StringGrid2, 'stringgrid2', ini);
  ini.Free;
end;
 
procedure TForm1.btnLoadClick(Sender: TObject);
 
  procedure LoadGrid(g : TStringGrid; title : string; ini : TIniFile);
  var ms : TMemoryStream;
  begin
    ms := TMemoryStream.Create;
    ini.ReadBinaryStream('grids', title, ms);
    ms.Position := 0;
    g.LoadFromCSVStream(ms, #9);
    ms.Free;
  end;
 
var
  ini : TIniFile;
begin
  ini := TIniFile.Create(ChangeFileExt(ParamStrUTF8(0), '.ini'));
  LoadGrid(StringGrid1, 'stringgrid1', ini);
  LoadGrid(StringGrid2, 'stringgrid2', ini);
  ini.Free;
end;
0
SEREGIUS
0 / 0 / 0
Регистрация: 18.02.2017
Сообщений: 8
06.04.2017, 14:40 #7
Спасибо за помощь. Возникла проблема при загрузке в таблицу. У меня одна колонка с чекбоксом, поэтому воспользовался TGridColumns. при загрузке появляется одна дополнительная колонка и шапка сдвигается на одну позицию вправо, но данные загружаются правильно.
0
Миниатюры
Сохранение таблицы в файл   Сохранение таблицы в файл  
Вложения
Тип файла: 7z ComboBox_StringGrid_2.7z (671.3 Кб, 1 просмотров)
volvo
Супер-модератор
Эксперт Pascal/DelphiАвтор FAQ
25624 / 17177 / 6830
Регистрация: 22.10.2011
Сообщений: 30,369
Записей в блоге: 6
06.04.2017, 16:50 #8
Лучший ответ Сообщение было отмечено volvo как решение

Решение

SEREGIUS, конкретно для твоего случая - нужно сохранять/читать грид без заголовков, а после чтения грида - удалить столько Columns, сколько в нем фиксированных столбцов. То есть, один:
Pascal
1
2
3
    ms.Position := 0;
    g.LoadFromCSVStream(ms, #9, false); // <--- добавь тут False
    g.Columns.Delete(pred(g.Columns.Count)); // <--- и вот эту строку в процедуру LoadGrid
Pascal
1
2
3
4
    ms := TMemoryStream.Create;
    g.SaveToCSVStream(ms, #9, false); // а тут False в SaveGrid
    ini.WriteBinaryStream('grids', title, ms);
    ms.Free;
1
SEREGIUS
0 / 0 / 0
Регистрация: 18.02.2017
Сообщений: 8
06.04.2017, 17:17 #9
Спасибо, всё работает. False я догадался поставить, но про удаление не сообразил.
0
06.04.2017, 17:17
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
06.04.2017, 17:17
Привет! Вот еще темы с решениями:

Сохранение данных в файл
Доброго времени суток. Допустим,есть таблица с некоторыми данными. Как сделать...

Сохранение переменной в файл
Добрый день. Имеется кусок кода. В этом куске проверяется наличие файла,...

Сохранение текста в текстовый файл
Можно ли сохранить написанный текст в блокнот в процедуре, если можно то как...

Сохранение графики в типизированный файл
Всем привет. Перерыл весь интернет, но внятного решения найти не смог, хотя,...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
9
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2018, vBulletin Solutions, Inc.
Рейтинг@Mail.ru