Главная страница
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.007 c
15-1245949320
Илья_
2009-06-25 21:02
2009.08.23
Сборка компьютера


15-1245417712
ганя
2009-06-19 17:21
2009.08.23
Какие инструменты UML вы используете?


15-1245789024
Юрий
2009-06-24 00:30
2009.08.23
С днем рождения ! 24 июня 2009 среда


15-1245702601
Юрий
2009-06-23 00:30
2009.08.23
С днем рождения ! 23 июня 2009 вторник


4-1215102058
NIZAM
2008-07-03 20:20
2009.08.23
ОТКРЫРЬ ПАПКУ С ЗАДАННЫМ ФАЙЛОМ