Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2004.08.01;
Скачать: CL | DM;

Вниз

Packed record & File   Найти похожие ветки 

 
webpauk   (2004-07-20 11:30) [0]

Создаю следующие записи:
  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;
но инициализировать его почему то не получается


 
Digitman ©   (2004-07-20 11:34) [1]

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

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


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


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

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

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


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

заменил

 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 12:00) [4]

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


 
webpauk   (2004-07-20 12:07) [5]

fInfo: Tinfo


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


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

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

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


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

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


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


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

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



Страницы: 1 вся ветка

Текущий архив: 2004.08.01;
Скачать: CL | DM;

Наверх




Память: 0.48 MB
Время: 0.058 c
11-1078271001
Dream
2004-03-03 02:43
2004.08.01
Flash


3-1089372558
Sirruf
2004-07-09 15:29
2004.08.01
PickList в TColumnEh


14-1089449926
Mell
2004-07-10 12:58
2004.08.01
Красивый toolbar


1-1090320882
Kost
2004-07-20 14:54
2004.08.01
Передача string в dll


14-1089778010
АлексейК
2004-07-14 08:06
2004.08.01
Диагноз или ...?