![]() |
|
|
|
|
#1
|
||||
|
||||
|
Искал не нашел, как сохранить TList в файл?
|
|
#2
|
||||
|
||||
|
Он для других целей предназначен. Представь у тебя список объектов загружен а ты их в файл.
|
|
#3
|
||||
|
||||
|
плохо, мне как раз в такой форме работать хорошо с ним,
приходится работать со TStringList'ами данные в которых держу через разделители Цитата:
|
|
#4
|
|||
|
|||
|
Надо:
1. Написать классы для твоих данных, содержащие кроме того методы SaveToStream и LoadFromStream (по названиям понятно, что они должны делать?) 2. Перейти от TList к TObjectList. 3. Соответсвенно, для сохранения создать файловый поток, а потом у всех объектов в списке вызвать соотв. метод. С загрузкой сложнее, если объекты разнотипные, то надо будет делвть фабрику и дорабатывать сохранение, что бы сначала писался признак класса объекта, а потом сами данные. |
|
#5
|
||||
|
||||
|
lmikle что то вроде этого?
Код:
procedure TForm1.Button2Click(Sender: TObject);
var
fs: TFileStream;
pl: PMyList;
l: Integer;
s: String;
b: Boolean;
begin
if OpenDialog1.Execute then begin
FormDestroy (Sender);
fs := TFileStream.Create (OpenDialog1.FileName, fmOpenRead);
while fs.Position < fs.Size do begin
fs.ReadBuffer (l, SizeOf(l));
SetLength (s, l);
fs.ReadBuffer (Pointer(s)^, l);
fs.ReadBuffer (b, SizeOf(b));
New (pl);
pl.obj := s;
pl.buffer := b;
if List = nil then begin
pl.rnext := nil;
pl.lnext := nil;
pl.root := pl;
end
else begin
pl.rnext := nil;
pl.lnext := List;
pl.root := List.root;
List.rnext := pl;
end;
List := pl;
end;
fs.Free;
LoadListToForm;
end;
end;
procedure TForm1.Button3Click(Sender: TObject);
var
fs: TFileStream;
pl: PMyList;
l: Integer;
s: String;
b: Boolean;
begin
if SaveDialog1.Execute then begin
fs := TFileStream.Create (SaveDialog1.FileName, fmCreate);
pl := List.root;
while pl <> nil do begin
s := pl.obj;
l := Length (s);
b := pl.buffer;
fs.WriteBuffer (l, SizeOf(l));
fs.WriteBuffer (Pointer(s)^, l);
fs.WriteBuffer (b, SizeOf(b));
pl := pl.rnext;
end;
fs.Free;
end;
end; |
|
#6
|
||||
|
||||
|
Имелось в виду, НАПИСАТЬ свои классы от существующих.
|