Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2009.08.23;
Скачать: 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 вся ветка

Текущий архив: 2009.08.23;
Скачать: CL | DM;

Наверх




Память: 0.48 MB
Время: 0.011 c
2-1245784213
Mishechka
2009-06-23 23:10
2009.08.23
Работа с ini-файлом..?


1-1211808558
Ilg
2008-05-26 17:29
2009.08.23
Кнопка с фиксацией и TabStop


15-1246001034
Василий Жогарев
2009-06-26 11:23
2009.08.23
PostgreSQL 8.3 and DataType serial


15-1245665286
Style
2009-06-22 14:08
2009.08.23
php mssql


2-1245924610
webpauk
2009-06-25 14:10
2009.08.23
Определение процедуры