Форум: "Основная";
Текущий архив: 2004.11.21;
Скачать: [xml.tar.bz2];
ВнизСохранение массива в файл Найти похожие ветки
← →
SteelMan (2004-11-05 19:38) [0]TA3 = record
A3Text: string[150];
YN: boolean;
end;
TA2 = record
A2Text: string[235];
TAData: array of TA3;
end;
TA1= record
TName: string[180];
TData: array of TA2;
end;
MasAr = array of TA1;
{***}
var F: file of T1; {ВОТ ЗДЕСЬ ВЫДАЕТ ОШИБКУ!}
AssignFile(f, "A.aaa");
Rewrite(F);
for i:= 0 to length(MasAr)-1 do begin
write(F, MasAr[i]);
end;
closefile(F);
Помогите решить возникшую проблему!
← →
begin...end © (2004-11-05 19:40) [1]
> SteelMan (05.11.04 19:38)
> var F: file of T1; {ВОТ ЗДЕСЬ ВЫДАЕТ ОШИБКУ!}
В приведённом коде не видно описания типа T1.
← →
Anton_K © (2004-11-05 19:43) [2]Там динамические массивы есть.
← →
SteelMan (2004-11-05 19:44) [3]спешил, вот и ошибка :))
var F: file of TA1; {ВОТ ЗДЕСЬ ВЫДАЕТ ОШИБКУ!}
Смысл не в этом, ошибка:
"Type TA1 needs finalization - not allowed in file type"
← →
Anton_K © (2004-11-05 19:45) [4]>[3] Там динамические массивы есть!
← →
SteelMan (2004-11-05 19:46) [5]Как я понял, запись(record) не может быть переменной длины... так все таки как сделать сохранение в файл...
← →
SteelMan (2004-11-05 19:47) [6]
> >[3] Там динамические массивы есть!
Да я заметил :)) что там динамические массивы!!!!!
← →
Anatoly Podgoretsky © (2004-11-05 19:48) [7]Не используй типизированые файлы.
← →
PVOzerski © (2004-11-05 19:48) [8]Объясню, в чем дело. Если мы пишем array of AnyType, компилятор эту переменную интерпретирует как указатель на особую структуру. Вам файл указателей сильно нужен? Вот Borland и позаботился, чтобы случайно такое не создать. Тем более, что для этой "особой структуры" используются и особые механизмы управления памятью.
← →
begin...end © (2004-11-05 19:49) [9]Или не используй динамические массивы :-)
← →
SteelMan (2004-11-05 19:56) [10]
> PVOzerski
Спасибо за совет!
> Или не используй динамические массивы :-)
В моей проге так нельзя... Там уже дофига всего написано, осталось сохранение/загрузка в/из файл/файла. Все менять мне влом! Да и тем более заранее не известно, сколько будет элементов в массиве!
← →
uny (2004-11-05 19:58) [11]можно записать динамический массив в файл как нибудь иначе чем записывая каждый элемент в цикле?
← →
PVOzerski © (2004-11-05 19:59) [12]Придется тогда все-таки переходить на нетипизированные файлы или на потоки. И писать/читать не запись целиком, а по полям. И с полкм-динамическим массивом разговор будет особый: сначала длина, потом - содержимое, притом по адресу 0-го элемента, а не по адресу переменной как таковой.
← →
SteelMan (2004-11-05 20:02) [13]
> PVOzerski © (05.11.04 19:59) [12]
Хм... А кто-нибудь код представит? :))
← →
PVOzerski © (2004-11-05 20:15) [14]Вот подсказка:
x:=length(TData);
blockwrite(f,x,sizeof(x));
if x>0 then
blockwrite(f,TData[0],sizeof(TData[0])*x);
Дальше - сам.
← →
SteelMan (2004-11-05 20:20) [15]
> PVOzerski © (05.11.04 20:15) [14]
Спасибо! буду пытаться дальше.. :))
Страницы: 1 вся ветка
Форум: "Основная";
Текущий архив: 2004.11.21;
Скачать: [xml.tar.bz2];
Память: 0.47 MB
Время: 0.037 c