Главная страница
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.057 c
14-1089823715
VID
2004-07-14 20:48
2004.08.01
Совместное использование ресурсов компьютера в сети. Как ?


4-1087382966
Leon
2004-06-16 14:49
2004.08.01
Можно ли послать сообщение WM_CLOSE и не ждать


1-1089878900
Yurko
2004-07-15 12:08
2004.08.01
Обработка нажатия


1-1089878578
nOOb
2004-07-15 12:02
2004.08.01
Как в TMemo добавить слово не снизу, а рядом?


1-1090222068
Dr.Karter
2004-07-19 11:27
2004.08.01
Вопрос по печати