Top.Mail.Ru
Мастера DELPHI, Delphi programming community Титульная страница Поиск, карта сайта Написать письмо 
| Новости | Поиск | FAQ | Статьи | Книги | Новости VCL |
| Форумы ЧАТ | Орешник | KOL и MCK |
Форумы -» Основная («Начинающим»)/ Базы / WinAPI / Компоненты / Сети / Media / Игры / Corba и COM / KOL / FreePascal / .Net / Прочее / RSDN.ORG

« предыдущая ветвь | форум | следующая ветвь »

Сохранение StringGrid в файл


Sergey_R ©   (2005-09-28 13:30:00) 

А как лучше всего сохранить и структуру и ячейки Stringgrid'a в файл?
Пробовал сделать так:

procedure aaa;
var F:TfileStream;
begin
f.Create('1.txt',fmCreate);
try
F.WriteComponent(Stringgrid1);
finally
F.Free;
end;
end;


а для чтения то же самое, только параметр fmRead и процедура ReadComponent. Так этот код сохраняет только структуру, но не данные ячеек!


Ling   (2005-10-01 15:51:00) [1]

Зачем тебе ещё один TStrings?
TStringGrid.Rows чем не подходит?


Sergey_R   (2005-10-01 15:03:00) [2]

Я уже понял как это можно сделать гораздо проще!
надо создать List:Tstrings;
куда записать размеры таблицы и содержимое всех ячеек и потом SaveToFile...


Думкин   (2005-09-29 12:32:00) [3]

#9 #10


Sergey_R   (2005-09-29 12:30:00) [4]

Структура есть количество строк и столбцов, шрифт, ширина столбцов и т.д.
А про сохранение я уже придумал:

procedure aaa;
var F1:TfileStream;
F:Textfile;
i,j:integer;
begin
f.Create('1.txt',fmCreate);
try
F.WriteComponent(Stringgrid1);
finally
F.Free;
end;
assign(f,'2.txt');
Reset(f);
for i:=0 to StringGrid1.Rowcount do
  begin
        for j:=0 to StringGrid1.ColCount do
           write(f,StringGrid1.Cells[i,j]+'//');
        writeln('\\');
  end;
closefile(f);
end;


Правда вот эти '\\' и '//' все портят. Лучше было бы поставить знак табуляции и перехода на новую строку. Кто-нибудь знает, как это сделать?


Германн   (2005-09-29 02:42:00) [5]

2GanibalLector ©   (29.09.05 02:10) [2]
>когда-то делал так(это я о данных) :

Дык ведь автор спросил - " А как лучше всего сохранить и структуру и ячейки Stringgrid'a в файл?"!

Правда он не уточнил, что есть структура?!


GanibalLector   (2005-09-29 02:10:00) [6]

когда-то делал так(это я о данных) :


procedure Save(const List:TStringGrid;File_:TFileName);
 var GoodList:TStringList;
     I,II:Integer;
     St:String;
begin
 GoodList:=TStringList.Create;
 try
   for i:= 1 to List.RowCount-1 do
   begin
     St:='';
     for ii:=1 to List.ColCount-1 do
     if ii<>List.ColCount-1 then
       St:=St+TStrings(List.Rows[i]).Strings[ii]+';'
     else St:=St+TStrings(List.Rows[i]).Strings[ii];
     GoodList.Add(St);
   end;
   GoodList.SaveToFile(File_);
 finally
   GoodList.Free;
 end;
end;



использую так :

Save(Form3.StringGrid1,SaveDialog1.FileName);


VG   (2005-09-28 13:36:00) [7]

Посмотри TMSGrid там есть такое.


Наверх

Титульная страница Поиск, карта сайта Написать письмо