![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
Сохранение 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 там есть такое.