Вниз
Скачать: CL | DM;

Как записать в memorystream динамический массив Double -ов?   Найти похожие ветки 

 
marantz85   (2009-06-23 20:46) [0]

Удалено модератором
Примечание: спам


 
KilkennyCat ©   (2009-06-23 21:24) [1]

А если недубли, то тогда все ясно?
И зачем в памяти гонять туда-сюда?


 
marantz85   (2009-06-23 21:43) [2]

У меня 2 мерный массив, значений эдак на 4000000 (т.е. 8*500000 значений). Допустим 1 массив надо сохранить в файл в двоичном виде. Сохранить поток - самый быстрый путь, по моему! Вот...


 
Loginov Dmitry ©   (2009-06-23 21:45) [3]

Если динамический (в терминологии Delphi) массив одномерный, то очень просто:
Mass: array of Double;
.................................
ms.Write(Mass[0], Length(Mass) * SizeOf(Double))


если изменений больше, то придется сохранять каждое в отдельности, а заодно хранить информацию о размерах массива.

Если массив динамический в классическом смысле (т.е. память выделяет программист с помощью GetMem() и т.п.), то еще проще:
type
 PDoubleArray = ^TDoubleArray;
 TDoubleArray = array[0..MaxInt div SizeOf(Double) - 1] of Double;
var
 Mass: PDoubleArray;
.....
 ReallocMem(Mass, ЧислоЭлементов * SizeOf(Double))
.....
ms.Write(Mass^, ЧислоЭлементов * SizeOf(Double));


 
marantz85   (2009-06-23 21:54) [4]

Если 524288 вместо 1048576 то всё работает? Видимо не хватает памяти.
Что можно сделать?
// Сохранение канала в файл
   ms:=TMemoryStream.Create;
   ms.Position:=0;
   ms.Write(Data[0],1048576); // Проблема здесь.

   ms.Position:=0;
   ms.SaveToFile(fn);
   FreeAndNil(ms);


 
Loginov Dmitry ©   (2009-06-23 22:01) [5]

)
> ms.Write(Data[0],1048576); // Проблема здесь.


1048576 - это что за значение?
Сколько всего элементов в массиве? Каким образом устанавливается длина массива? Как объявлена переменная Data?


 
marantz85   (2009-06-23 22:09) [6]

Data: Array Of Array Of Double; // Массив всех исходных данных

Загружаю данные из двоичного файла через memorystream :
SetLength(Data[d], datastream.Size div sizeof(Double));

Размер файла - 4 Мегабайта, там значений 524288
В общем после некоторых действий мне нужно быстренько сохранить это дело в файл.


 
Loginov Dmitry ©   (2009-06-23 22:11) [7]

Так. Что такое d?



Страницы: 1 вся ветка

Скачать: CL | DM;



Память: 0.46 MB
Время: 0.011 c
6-1200297698
JanMihail
2008-01-14 11:01
2009.08.23
Как подождать загрузки WebBrowser a


2-1245838548
Uno-84
2009-06-24 14:15
2009.08.23
Отрисовка ProgressBar в ListView


15-1245701175
matt
2009-06-23 00:06
2009.08.23
Помогите найти автора цикла книг


1-1212431764
framez
2008-06-02 22:36
2009.08.23
Удаление файла с Http сервера


15-1245866318
Игорь Шевченко
2009-06-24 21:58
2009.08.23
Чем можно распаковать многотомный tar-архив под windows ?




   Наверх