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

Вниз

Как обойти эту проблему   Найти похожие ветки 

 
Popova   (2003-11-02 17:22) [0]

Создаю тип
Type TMyType=record
s:integer;
str:string;
end;

затем

var f:file of TMyType;

но при компиляции ошибка
Type "<name>" needs finalization - not allowed in file type
в хелпе написано что надо str:array [1..100] of char;

Это как нибудь можно обойти я ведь не знаю кокй длины заранее у меня будет str?


 
Anatoly Podgoretsky ©   (2003-11-02 17:28) [1]

В типизированном файле все записи должно быть одинаковой длины!
Ну и чем тебя спарвка не устраивает? Если конечно теб нужно 100 символов.


 
default ©   (2003-11-02 17:52) [2]

"Это как нибудь можно обойти я ведь не знаю кокй длины заранее у меня будет str?"
ну если, к примеру, у тебя все строки не длинее 100 символов, можешь описать их как "str:array [1..100] of char" и воспринимать файлы таких записей как типизированные если, конечно, память не жалко или что-то ещё...


 
Юрий Федоров ©   (2003-11-02 18:30) [3]

Либо str: ShortDtring;
либо str:string[100];
либо str: array [1..100] of char
Либо не использовать file of TMyType, а например TFileStream


 
Gero ©   (2003-11-02 19:07) [4]

Я тоже когда-то сталкивался с этой проблемой. Один из возможных вариантов решения:


type TMyType = record
S : Integer;
Str : String;
end;
var
MyR : TMyType;
F : file;
begin
AssignFile(F, "MyFile.my");
Reset(F, 1);
BlockRead(F, MyR, SizeOf(MyR));
CloseFile(F);
end.


Кроме того, если известно, что Str не больше 256 символов, используй Str : ShortString. Тогда ошибки не возникает.


 
Palladin ©   (2003-11-02 22:19) [5]

нда

> Gero © (02.11.03 19:07) [4]

твой вариант ошибочный абсолютно


 
default ©   (2003-11-02 22:24) [6]

Palladin © (02.11.03 22:19) [5]
прикинь это один из возможных вариантов решения, рискну предположить, что он выбрал наилучший, какие же остальные...
Gero © (02.11.03 19:07) [4]
записывается(считывается) указатель на строку, а не сама строка(в файл/из файла)


 
Gero ©   (2003-11-02 22:36) [7]

Я использовал это, когда надо было считать/записать дин. массив в файл. Потому как при использовании array of SomeType в record и попытке объявить F : TMyType возникала та же ошибка.


 
Palladin ©   (2003-11-03 01:59) [8]

Ну типа хорошо... можешь юзать дальше свой способ... лично я не против...



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

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

Наверх




Память: 0.48 MB
Время: 0.415 c
4-42312
wwolf
2003-09-05 09:17
2003.11.13
Блокировка спящего режима


1-41385
kavlad
2003-10-30 12:28
2003.11.13
Все (почти) пропало


14-42042
Карелин Артем
2003-10-22 15:53
2003.11.13
Покритикуйте мою вторую попытку многопоточного доступа к базе.


1-41521
maestro
2003-10-28 07:55
2003.11.13
уничтожение компонента Button


3-40838
Александр из Минска
2003-10-20 15:53
2003.11.13
Хотелось бы научиться