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

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

Запись в файл данных динамического массива


bestolkov ©   (2011-07-12 09:49:00) 

Добрый день!Существует ли быстрый способ записи в файл данных динамического массива?Поэлементно уж очень долго...


Сергей М.   (2011-07-12 11:22:00) [1]


> RWolf ©   (12.07.11 11:14) [12]
>
> if i<>0 then


Если не заморачиваться производительностью алгоритма, то это лишнее.


~   (2011-07-12 11:17:00) [2]


> Сергей М. ©   (12.07.11 11:09) [10]


"Либо" засчитано )) +1


RWolf   (2011-07-12 11:14:00) [3]

if i<>0 then
 FileStream.WriteBuffer(MyDynArray[0], i*SizeOf(TRecord));


Сергей М.   (2011-07-12 11:09:00) [4]


> Есть либо писать


Это уж автору решать - либо есть либо писать)
А объем съедаемого либо писаемого автором нифига не озвучен, зато озвучено вполне определенное требование - файл. Потому и FileStream. А уж что за ним скрывается - это домашнее задание автору)


Плохиш   (2011-07-12 11:09:00) [5]


> ~   (12.07.11 10:55) [9]
>
>
> > Сергей М. ©   (12.07.11 10:05) [5]
>
>
> тип "FileStream" нифига не озвучен.

Это домашнее задание.


~   (2011-07-12 10:55:00) [6]


> Сергей М. ©   (12.07.11 10:05) [5]


тип "FileStream" нифига не озвучен.
Поясню: Есть либо писать в память, либо на хард. При больших объемах разница существенна


Сергей М.   (2011-07-12 10:25:00) [7]


> Можно только второй мах оставить


Разумеется, можно и только второй, если в этот файл больше ничего записано не будет.


Омлет   (2011-07-12 10:22:00) [8]

> раз мах

Можно только второй мах оставить )

> Поэлементно уж очень долго...

Это сколько же у вас элементов?


bestolkov   (2011-07-12 10:21:00) [9]

Исчерпывающе, большое спасибо!


Сергей М.   (2011-07-12 10:05:00) [10]

var
 i: Integer;
MyDynArray: array of TRecord;
..
i := Length(MyDynArray);
FileStream.WriteBuffer(i, SizeOf(i)); // раз мах
FileStream.WriteBuffer(MyDynArray[0], i*SizeOf(TRecord)); // два мах


bestolkov   (2011-07-12 10:02:00) [11]

Trecord =
B : byte;
A: array[0..3] of real
Ab:array  [0..3] of real


Сергей М.   (2011-07-12 09:58:00) [12]


> Trecord


Смотря что за TRecord ..


bestolkov   (2011-07-12 09:57:00) [13]

DataArray : array of Trecord


Сергей М.   (2011-07-12 09:54:00) [14]

Смотря что за массив ..
Кое-какие можно в два маха записать, а прочие в N махов ..


Наверх

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