Top.Mail.Ru
Мастера DELPHI, Delphi programming community Титульная страница Поиск, карта сайта Написать письмо 
| Новости | Поиск | FAQ | Статьи | Книги | Новости VCL |
| Форумы ЧАТ | Орешник | KOL и MCK |
Форумы -» Основная («Начинающим»)/ Базы / WinAPI / Компоненты / Сети / Media / Игры / Corba и COM / KOL / FreePascal / .Net / Прочее / RSDN.ORG

« предыдущая ветвь | форум | следующая ветвь »

Packed record & File [D6, WinXP]


webpauk ©   (2004-07-20 11:30:00) 

Создаю следующие записи:
  TBlackWhite = (Black, White);

  TStep = packed Record
     BW: TBlackWhite;
     X, Y: Integer;
  end;

  TInfo = packed record
     KolKletka, SizeOfKletka, arrayCount: Integer;
     ffArray: array of Tstep;
  end;


после чего пытаюсь создать файл:
GFile: File of TInfo;

а Delphi ругается
Type 'TInfo' needs finalization - not allowed in file type

может кто подскажет причину и возможность устранения ошибки?!

пытался создать указатель pInfo = ^TInfo;
но инициализировать его почему то не получается


Суслик   (2004-07-20 12:17:00) [1]


> Спасибо всем кто помогал.

и еще!
включи range check error в опициях проекта.
рано тебе их еще выключать.
сразу бы ошибку нашел.


webpauk   (2004-07-20 12:15:00) [2]

Просю пробачення, если что-то неправильно объяснил.
В процессе создания изменил record Tinfo, а указать это забыл.
В общем уже разобрался - запись нужно делать fInfo.ffArray[ I+1]:=fArray[I];
Спасибо всем кто помогал.
Жаль, что динамический массив нельзя запихнуть. Из-за статического файл разросся до 3K!(было порядка 80bt)


Суслик   (2004-07-20 12:09:00) [3]


> webpauk   (20.07.04 12:07) [5]
> fInfo: Tinfo

угу, кончено :)))
fKolKletka в TInfo откуда?

у тебя есть нормально откомпилированный, НО неработающий код?
что мОзги пудришь.


webpauk   (2004-07-20 12:07:00) [4]

fInfo: Tinfo


Суслик   (2004-07-20 12:00:00) [5]

знать бы еще что такое fInfo


webpauk   (2004-07-20 11:51:00) [6]

заменил

 TInfo = packed record
    KolKletka, SizeOfKletka, arrayCount: Integer;
    ffArray: array [1..361] of Tstep;
 end;


а когда пытаюсь:
  fInfo.fKolKletka:=KolKletka;
  fInfo.fSizeOfKletka:=SizeOfKletka;
  fInfo.farrayCount:=arrayCount;

  for I := Low(fArray) to arrayCount do
  begin
     fInfo.ffArray[I]:=fArray[I];
  end;

, то данные fArray записываются не в fInfo.ffArray, а в fInfo.fSizeOfKletka и fInfo.farrayCount. Почему?


Суслик   (2004-07-20 11:35:00) [7]


> может кто подскажет причину и возможность устранения ошибки?!

т.к. есть динамический массив, а он требует именно того о чем написано в жирном сообщении.

1. замените на фикс. массив.
2. если п1 не реален не пользуйтесь типизированными файлами. Пишите сами в бинартник со своим протоколом.


Digitman   (2004-07-20 11:34:00) [8]

причина - в присутствии в объявлении в теле структуры TInfo дин.типа данных

меняй на статический тип - и все будет в порядке


Наверх

Титульная страница Поиск, карта сайта Написать письмо