Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "Основная";
Текущий архив: 2003.11.13;
Скачать: [xml.tar.bz2];

Вниз

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

 
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;
Скачать: [xml.tar.bz2];

Наверх





Память: 0.45 MB
Время: 0.043 c
1-41303
Vadim S
2003-10-23 12:10
2003.11.13
Округление? Round() кто как делает?


14-42013
gn
2003-10-17 07:11
2003.11.13
вот же буржуи


3-40990
User_OKA
2003-10-16 07:50
2003.11.13
Отображение значения справочника


1-41687
TCrash
2003-11-05 00:07
2003.11.13
ListView. Как раскрасить строки


1-41278
Nikolay M.
2003-10-31 11:32
2003.11.13
Ручной отлов Exception-ов - ?





Afrikaans Albanian Arabic Armenian Azerbaijani Basque Belarusian Bulgarian Catalan Chinese (Simplified) Chinese (Traditional) Croatian Czech Danish Dutch English Estonian Filipino Finnish French
Galician Georgian German Greek Haitian Creole Hebrew Hindi Hungarian Icelandic Indonesian Irish Italian Japanese Korean Latvian Lithuanian Macedonian Malay Maltese Norwegian
Persian Polish Portuguese Romanian Russian Serbian Slovak Slovenian Spanish Swahili Swedish Thai Turkish Ukrainian Urdu Vietnamese Welsh Yiddish Bengali Bosnian
Cebuano Esperanto Gujarati Hausa Hmong Igbo Javanese Kannada Khmer Lao Latin Maori Marathi Mongolian Nepali Punjabi Somali Tamil Telugu Yoruba
Zulu
Английский Французский Немецкий Итальянский Португальский Русский Испанский