![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
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 дин.типа данных
меняй на статический тип - и все будет в порядке