Форум: "Начинающим";
Текущий архив: 2014.07.13;
Скачать: [xml.tar.bz2];
ВнизСохранение и загрузка StringGrid в файл Найти похожие ветки
← →
Никита2013 (2013-09-15 01:23) [0]Здравствуйте! Нашел в сети интересную реализацию сохранения/загрузки ListView в файл:
Procedure SaveListView(S: String; ListView: TListView);
Const Delimiter = "|";
Var ff: TextFile;
t: Integer;
begin
AssignFile(ff, S);
ReWrite(ff);
try
With ListView Do For t:=0 to Items.Count - 1 Do
WriteLn(ff,StringReplace(Items[t].Caption + Delimiter + Items.Item[t].SubItems.Text,#13#10,Delimiter,[rfReplaceAll]));
finally
CloseFile(ff);
end;
end;
procedure LoadListViewToFile(ListView: TListView; S: String);
Const Delimiter = "|";
Var
ff: TextFile;
Begin
ListView.Clear;
AssignFile(ff, S);
Reset(ff);
try
While not Eof(ff) Do
Begin
ReadLn(ff,S);
With ListView.Items.Add Do
Begin
Caption:=Copy(S,1,Pos(Delimiter,S)-1);
System.Delete(S,1,Pos(Delimiter,S));
S:=StringReplace(S,Delimiter,#13#10,[rfReplaceAll]);
SubItems.Text:=S;
End;
End;
finally
CloseFile(ff);
end;
End;
Решил приспособить для грида. Сохранения осилил, а вот на загрузке немного застрял:
procedure LoadToGrid(s:String);{S:filename}
Const Delimiter = "|";
Var
ff: TextFile;
i,n:Integer;
Begin
{for I := 0 to Form1.StringGrid1.RowCount - 1 do Form1.StringGrid1.Rows[I].Clear;}
AssignFile(ff, S);
Reset(ff); n:=0;
try
While not Eof(ff) Do
Begin
ReadLn(ff,S);
Form1.StringGrid1.Cells[0,n]:=Copy(S,1,Pos(Delimiter,S)-1);
System.Delete(S,1,Pos(Delimiter,S));
S:=StringReplace(S,Delimiter,#13#10,[rfReplaceAll]);
Form1.StringGrid1.Cells[1,n]:=S;
n:=n+1;
End;
finally
CloseFile(ff);
end;
End;
Содержимое файл загружается, первая колонка нормально,а во вторую впихивает все данные из второй плюс из других колонок тоже. Как разделить непонятно :( Буду благодарен за советы!
← →
Германн © (2013-09-15 03:15) [1]
while not Eof(ff) do begin
ReadLn(ff,S);
StringGrid1.Rows[n].Text:=StringReplace(S,Delimiter,#13#10,[rfReplaceAll]);
n:=n+1;
end;
← →
Никита2013 (2013-09-15 09:52) [2]Спасибо большое! Буду пробовать... :-)
← →
Никита2013 (2013-09-15 10:20) [3]На строке StringGrid1.Rows[n].Text:=StringReplace(S,Delimiter,#13#10,[rfReplaceAll]);
выдает такую ошибку:
Undeclared identifier: "Rows"
(Delphi XE5, приложение для Андроид)
← →
Германн © (2013-09-15 12:29) [4]
> Delphi XE5, приложение для Андроид
Значит не судьба получить на FMX простой код. Придется вытаскивать значения для всех столбцов поодиночке.
← →
Никита2013 (2013-09-15 12:40) [5]Сделал так:
While not Eof(ff) Do
Begin
ReadLn(ff,S);
StringGrid1.Cells[0,n]:=Copy(S,1,Pos(Delimiter,S)-1);
for i:=1 to 16 do {по кол.столбцов}
begin
System.Delete(S,1,Pos(Delimiter,S));
StringGrid1.Cells[i,n]:=Copy(S,1,Pos(Delimiter,S)-1);
end;
n:=n+1;
End;
Вроде пашет... :)
Страницы: 1 вся ветка
Форум: "Начинающим";
Текущий архив: 2014.07.13;
Скачать: [xml.tar.bz2];
Память: 0.45 MB
Время: 0.002 c