Re: Нефиксированная длина
Здравствуйте, Alexo.
Вы писали 17 апреля 2005 г., 9:11:17:
A> A> type
A> TDocType=(TP_TEXT, TP_BITMAP);
A> TAnswer=record
A> AnswerText: TStringList;
A> AnswerBitmap: TBitmap;
A> Queue: integer;
A> Name: string;
A> end;
A> TAnswers=array of TAnswer;
A> TQuestion=record
A> QueType: TDocType;
A> AnsType: TDocType;
A> QuestionText: TStringList;
A> QuestionBitmap: TBitmap;
A> Answers: TAnswers;
A> Queue: integer;
A> Name: string;
A> end;
A> TQuestions=array of TQuestion;
A> TDocument=record
A> Name,
A> Author,
A> Version: string;
A> Max: integer;
A> Comments: TStringList;
A> Questions: TQuestions;
A> end;
A> A> Как TDocument сохранить в файл?
A> Я знаю, что нужны типы данных с фиксированной длиной, но всё-таки...
A> Можно сохранить не TDocument, а несколько TQuestion, тогда не будет
A> информации о документе...
A> Я так пробовал, но вместо TStringList сохраняется, естественно,
A> ерунда, а не сами строки.
A> Возможно ли вообще сохранить тип с нефиксированной длиной?
Если решать "в лоб", то нужно использовать или нетипизированные файлы,
или файловые потоки. И там, и там придется записывать все поля записей
"руками", списочные и массивные поля записывать поэлементно, а для полей
строчечного типа и типа TBitmap нужно еще и их размер в байтах
записывать в тот же самый файл - чтобы потом можно восстановить было
из файла. Неудобно все это.
А если без мороки все это делать, и если задача позволяет свободу в
выборе методов решения, то лучше написать базу данных.