![]() |
|
|
#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
|
||||
|
||||
![]() Имелось в виду, НАПИСАТЬ свои классы от существующих.
|