Top.Mail.Ru
Мастера DELPHI, Delphi programming community Титульная страница Поиск, карта сайта Написать письмо 
| Новости | Поиск | FAQ | Статьи | Книги | Новости VCL |
| Форумы ЧАТ | Орешник | KOL и MCK |
Форумы -» Основная («Начинающим»)/ Базы / WinAPI / Компоненты / Сети / Media / Игры / Corba и COM / KOL / FreePascal / .Net / Прочее / RSDN.ORG

« предыдущая ветвь | форум | следующая ветвь »

Сохранения в файл


Страницы:   1 2

Profi ©   (2004-12-02 00:49:00) 

Столкнулся тут с проблемой! Как за раз сохранить динамический список в файл?


GuAV   (2004-12-02 01:35:00) [21]

http://www.delphimaster.ru/articles/dyntable/index.html


GuAV   (2004-12-02 01:33:00) [22]

Profi ©   (02.12.04 1:29) [11]
там и так скорость ниже некуда.


Возможно, именно потому что выделяешь память для каждого элемента.


GuAV   (2004-12-02 01:30:00) [23]

GuAV ©   (02.12.04 1:26) [10]
L := Length(A);
BlockWrite(F, L, SizeOf(L));
BlockWrite(F, A[0], L);


L := Length(A);
BlockWrite(F, L, SizeOf(L));
BlockWrite(F, A[0], L * SizeOf(A[0]));


Да и длину можно не сохранять, если известна, или если в файле ничего кроме этого массива её можно взять из размера файла.


Profi   (2004-12-02 01:29:00) [24]

GuAV ©   (02.12.04 1:26) [10]
Опять же, я точно не знаю, сколько будет элементов, следовательно нужен список. Конечно можно потом его в массив скопировать, но это лишние телодвижения, там и так скорость ниже некуда.


GuAV   (2004-12-02 01:26:00) [25]

Profi ©   (02.12.04 1:22) [9]
Разве можно динамический массив в файл сохранить?


Да. Причём почти "за раз" - за 2 раза.
L := Length(A);
BlockWrite(F, L, SizeOf(L));
BlockWrite(F, A[0], L);


Profi   (2004-12-02 01:22:00) [26]

GuAV ©   (02.12.04 1:21) [8]
Разве можно динамический массив в файл сохранить?


GuAV   (2004-12-02 01:21:00) [27]

А почему бы не перестроить список так:
type
 el = record
   dx,dy:extended;
 end;

 TMyist = array of el

?


Profi   (2004-12-02 01:17:00) [28]

GuAV ©   (02.12.04 1:15) [6]
type
eluk=^el;
el=record
dx,dy:extended;
sl:eluk;
end;
var
gol,hv,pop:eluk;


В списке более 1000 элементов, поэтому надо его запихивать за раз, а не о элементно!


GuAV   (2004-12-02 01:15:00) [29]

ещё раз: что есть дин. список ? что есть элемент списка ?


> За одну запись! Без циклов!

зачем ?


Profi   (2004-12-02 01:13:00) [30]

GuAV ©   (02.12.04 1:07) [3]
За одну запись! Без циклов!


Gero   (2004-12-02 01:07:00) [31]

System.Write


GuAV   (2004-12-02 01:07:00) [32]

S := TMemoryStream.Create;
try
 S.WriteBuffer(MyVar, SizeOf(MyWar));
 Image1.Picture.Bitmap.SaveToStream(S);
 Memo1.Lines.SaveToStream(S);
 BlockWrite(F, S.Memory^,  S.Size);
finally
 S.Free;
end;


Лучше ответь на вопросы в [1] + вопрос:
для чего именно "за раз" ?


Profi   (2004-12-02 00:56:00) [33]

GuAV ©   (02.12.04 0:53) [1]
Ага, можно через TMemoryStream, вот только ни разу не юзал. Кинь маленький примерчик, плз!


GuAV   (2004-12-02 00:53:00) [34]

Какой список ? и список чего ?

и что значит "за раз" ??

Вот я скинул всё в TMemoryStream, а потом его одним BlockWrite в файл. Это за раз ?


Страницы:   1 2

Наверх

Титульная страница Поиск, карта сайта Написать письмо