Форум по Delphi программированию

Delphi Sources



Вернуться   Форум по Delphi программированию > Все о Delphi > [ "Начинающим" ]
Ник
Пароль
Регистрация <<         Правила форума         >> FAQ Пользователи Календарь Поиск Сообщения за сегодня Все разделы прочитаны

Ответ
 
Опции темы Поиск в этой теме Опции просмотра
  #1  
Старый 08.07.2011, 01:00
Аватар для ALexandr555
ALexandr555 ALexandr555 вне форума
Специалист
 
Регистрация: 09.10.2010
Адрес: Тольятти
Сообщения: 803
Версия Delphi: Delphi 7
Репутация: 2064
По умолчанию Сохраниение TList

Искал не нашел, как сохранить TList в файл?
Ответить с цитированием
  #2  
Старый 08.07.2011, 01:20
Аватар для angvelem
angvelem angvelem вне форума
.
 
Регистрация: 18.05.2011
Адрес: Омск
Сообщения: 3,970
Версия Delphi: 3,5,7,10,12,XE2
Репутация: выкл
По умолчанию

Он для других целей предназначен. Представь у тебя список объектов загружен а ты их в файл.
Ответить с цитированием
  #3  
Старый 08.07.2011, 01:38
Аватар для ALexandr555
ALexandr555 ALexandr555 вне форума
Специалист
 
Регистрация: 09.10.2010
Адрес: Тольятти
Сообщения: 803
Версия Delphi: Delphi 7
Репутация: 2064
По умолчанию

плохо, мне как раз в такой форме работать хорошо с ним,
приходится работать со TStringList'ами данные в которых держу через разделители
Цитата:
433676864=24.07.2011%1
54538633=24.07.2011%2
мне кажется не совсем рациональное решение чем можно обойтись с возможность сохранения, и без разделителей?
Ответить с цитированием
  #4  
Старый 08.07.2011, 01:42
lmikle lmikle вне форума
Модератор
 
Регистрация: 17.04.2008
Сообщения: 8,087
Версия Delphi: 7, XE3, 10.2
Репутация: 49089
По умолчанию

Надо:
1. Написать классы для твоих данных, содержащие кроме того методы SaveToStream и LoadFromStream (по названиям понятно, что они должны делать?)
2. Перейти от TList к TObjectList.
3. Соответсвенно, для сохранения создать файловый поток, а потом у всех объектов в списке вызвать соотв. метод. С загрузкой сложнее, если объекты разнотипные, то надо будет делвть фабрику и дорабатывать сохранение, что бы сначала писался признак класса объекта, а потом сами данные.
Ответить с цитированием
  #5  
Старый 08.07.2011, 01:55
Аватар для ALexandr555
ALexandr555 ALexandr555 вне форума
Специалист
 
Регистрация: 09.10.2010
Адрес: Тольятти
Сообщения: 803
Версия Delphi: Delphi 7
Репутация: 2064
По умолчанию

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  
Старый 08.07.2011, 01:59
Аватар для angvelem
angvelem angvelem вне форума
.
 
Регистрация: 18.05.2011
Адрес: Омск
Сообщения: 3,970
Версия Delphi: 3,5,7,10,12,XE2
Репутация: выкл
По умолчанию

Имелось в виду, НАПИСАТЬ свои классы от существующих.
Ответить с цитированием
Ответ


Delphi Sources

Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск
Опции просмотра
Комбинированный вид Комбинированный вид

Ваши права в разделе
Вы не можете создавать темы
Вы не можете отвечать на сообщения
Вы не можете прикреплять файлы
Вы не можете редактировать сообщения

BB-коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.
Быстрый переход


Часовой пояс GMT +3, время: 21:57.


 

Сайт

Форум

FAQ

Соглашения

Прочее

 

Copyright © Форум "Delphi Sources" by BrokenByte Software, 2004-2025