Вниз
Скачать: 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.014 c
15-1245919589
test
2009-06-25 12:46
2009.08.23
Обфускация


3-1226433808
EvgCh
2008-11-11 23:03
2009.08.23
Непонятная грабля с master-detail


15-1246004611
Knight
2009-06-26 12:23
2009.08.23
Скрин не передаётся по сети..


15-1245821248
Andy BitOff
2009-06-24 09:27
2009.08.23
Тут как-то пробегала ссылка...


3-1226318508
Барра Кабамма
2008-11-10 15:01
2009.08.23
TADOCommand + MSSQL + SP




   Наверх