Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "Начинающим";
Текущий архив: 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
15-1220722887
AlexDan
2008-09-06 21:41
2008.11.02
Экранная клавиатура..


15-1221112876
Slider007
2008-09-11 10:01
2008.11.02
С днем рождения ! 11 сентября 2008 четверг


2-1222063453
Sarton
2008-09-22 10:04
2008.11.02
Delphi 2009 юникод


15-1218713094
@!!ex
2008-08-14 15:24
2008.11.02
Хочу купить монитор


2-1221122040
RTF to TXT
2008-09-11 12:34
2008.11.02
Перевести большой текст RFT в текст кодировки Win1251





Afrikaans Albanian Arabic Armenian Azerbaijani Basque Belarusian Bulgarian Catalan Chinese (Simplified) Chinese (Traditional) Croatian Czech Danish Dutch English Estonian Filipino Finnish French
Galician Georgian German Greek Haitian Creole Hebrew Hindi Hungarian Icelandic Indonesian Irish Italian Japanese Korean Latvian Lithuanian Macedonian Malay Maltese Norwegian
Persian Polish Portuguese Romanian Russian Serbian Slovak Slovenian Spanish Swahili Swedish Thai Turkish Ukrainian Urdu Vietnamese Welsh Yiddish Bengali Bosnian
Cebuano Esperanto Gujarati Hausa Hmong Igbo Javanese Kannada Khmer Lao Latin Maori Marathi Mongolian Nepali Punjabi Somali Tamil Telugu Yoruba
Zulu
Английский Французский Немецкий Итальянский Португальский Русский Испанский