Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "Основная";
Текущий архив: 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.48 MB
Время: 0.032 c
1-1099465145
Layner
2004-11-03 09:59
2004.11.21
Как секции в TMainMenu программно отобразить в TPopupMenu?


1-1099778557
Logun
2004-11-07 01:02
2004.11.21
Сжатие данных


1-1099554968
star.ru
2004-11-04 10:56
2004.11.21
типа Graphics32


4-1097145044
lightix
2004-10-07 14:30
2004.11.21
Завершить сеанс работы Win2k


1-1100031806
maxXP
2004-11-09 23:23
2004.11.21
Мат функции





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
Английский Французский Немецкий Итальянский Португальский Русский Испанский