Главная страница
    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.035 c
1-41592
Yurko
2003-10-27 10:51
2003.11.13
Объекты в TStrings.


3-41001
KIR
2003-10-16 11:03
2003.11.13
При запуске UDF разрывается коннект с базой...?!


14-42128
armageddon
2003-10-24 15:43
2003.11.13
Hello


4-42308
AlexSSS
2003-09-07 13:54
2003.11.13
Temp


6-41792
Alibaba
2003-09-18 00:42
2003.11.13
Как скопировать файл на ftp





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
Английский Французский Немецкий Итальянский Португальский Русский Испанский