Главная страница
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.06 c
4-42314
Алексей Петухов
2003-09-05 12:10
2003.11.13
Прозрачные окошки


1-41356
viper_cd
2003-11-04 23:22
2003.11.13
Строка


3-40841
alxx
2003-10-21 16:38
2003.11.13
dbExpress


7-42165
DJ Vano
2003-08-31 22:39
2003.11.13
Cнятие показаний температуры


11-41123
vdas2
2003-02-16 03:29
2003.11.13
размер в памяти после запуска?