Форум: "Начинающим";
Текущий архив: 2008.11.02;
Скачать: [xml.tar.bz2];
ВнизСохранение массива в файл Найти похожие ветки
← →
Vitaliy_____ (2008-09-25 10:09) [0]Добрый день.
Имеется матрица, объявленная какarray of array of double;
Требуется сохранить ее в файл.
Изначально было сохранение матрицы поэлементно
for i_save:=0 to Mat.SizeY-1 do
for n_save:=0 to Mat.SizeX-1 do
FileWrite(iFileHandle,Mat.data[i_save,n_save],DoubleVarSize);
где mat.data - и есть матрица, SizeX и SizeY - ее размеры.
Однако при работе с большими матрицами, скажем 9000 элементов этот процесс оказался медленным.
Требуется сохранять матрицу "по строкам", записывая сразу по 9000 элементов. Однако код
StringSize:=SizeX*DoubleVarSize;
for i_save:=0 to SizeY-1 do
FileWrite(iFileHandle,TDoubleArray(data[i]),StringSize);
Не работает. Или динамический массив в памяти лежит не последовательно (что вряд ли) или я не понимаю в чем дело.
Подскажите, как лучше решить проблему ускорения записи...
← →
Поросенок Винни-Пух © (2008-09-25 10:11) [1]Райтфайлу нужен адрес, а не указатель
← →
Поросенок Винни-Пух © (2008-09-25 10:14) [2]function FileWrite(Handle: Integer; const Buffer; Count: LongWord): Integer;
data[i] это динамический массив, то есть ты передаешь указатель вместо адреса по которому расположены элементы
← →
Vitaliy_____ (2008-09-25 10:17) [3]Извиняюсь за пустой вопрос... Туплю я - читаю/пишу ссылки а не сами элементы...
Достаточно исправить на
FileWrite(iFileHandle,data[i,0],StringSize);
Самому смешно :)
← →
Vitaliy_____ (2008-09-25 10:18) [4]
>
> data[i] это динамический массив, то есть ты передаешь указатель
> вместо адреса по которому расположены элементы
Во-во. Достаточно дать его 0 элемент и писать все. Сейчас проверю, вроде работает...
Страницы: 1 вся ветка
Форум: "Начинающим";
Текущий архив: 2008.11.02;
Скачать: [xml.tar.bz2];
Память: 0.45 MB
Время: 0.007 c