Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > Delphi программирование > Общие вопросы Delphi
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 26.01.2011, 15:27   #1
Байконуровец
 
Регистрация: 22.01.2011
Сообщений: 5
По умолчанию Как создать типизированный файл?

Нужно создать типизированный файл где будут тестовые вопросы, варианты ответов и номер правильного ответа, номер вопроса.

Попробовал так, но компилятор выводит ошибку при создании файла. Помогите плиз


Код:
procedure TForm1.Button1Click(Sender: TObject);
type
Test=record
Question:string;
Answer:array[1..4] of string;
TrueAns:integer;
N:integer;
end;
var
F:file of test;
begin

end;
Выводит ошибку:

[Error] Unit1.pas(35): Type 'Test' needs finalization - not allowed in file type

Последний раз редактировалось Байконуровец; 26.01.2011 в 15:48.
Байконуровец вне форума Ответить с цитированием
Старый 26.01.2011, 16:02   #2
mss
Заблокирован
 
Регистрация: 27.05.2010
Сообщений: 1,099
По умолчанию

А головой думать будем ?)

Размер каждой записи типизированного файла одинаков и имеет строго определенное значение.

У тебя же запись типа Test содержит одним из полей данные типа String, размер которых на стадии компиляции НЕ известен.
mss вне форума Ответить с цитированием
Старый 26.01.2011, 16:04   #3
Serge_Bliznykov
Старожил
 
Регистрация: 09.01.2008
Сообщений: 26,229
По умолчанию

строковые типы данных в случае использования типизированного файла
ОБЯЗАТЕЛЬНО должны быть с указанием длины.
попробуйте так, например:
Код:
type
Test=record
  Question:string[200];
  Answer:array[1..4] of string[100];
  TrueAns:integer;
  N:integer;
end;
Serge_Bliznykov вне форума Ответить с цитированием
Старый 26.01.2011, 16:04   #4
Mad_Cat
Made In USSR!
Старожил
 
Аватар для Mad_Cat
 
Регистрация: 01.09.2010
Сообщений: 3,657
По умолчанию

Код:
procedure TForm1.Button1Click(Sender: TObject);
type
Test=record
Question:string[80];
Answer:array[1..4] of string[20];
TrueAns:integer;
N:integer;
end;
var
F:file of test;
begin

end;
"...В жизни я встречал друзей и врагов.В жизни много всего перевидал.Солнце тело мое жгло, ветер волосы трепал,но я смысла жизни так и не узнал..."
(c) Юрий Клинских aka "Хой"
Mad_Cat вне форума Ответить с цитированием
Старый 26.01.2011, 16:08   #5
Байконуровец
 
Регистрация: 22.01.2011
Сообщений: 5
По умолчанию

Уже разобрался, но все равно спасибо за отзыв
Байконуровец вне форума Ответить с цитированием
Старый 26.01.2011, 16:48   #6
Байконуровец
 
Регистрация: 22.01.2011
Сообщений: 5
По умолчанию

Может ли указанный размер поля оказ-ся недостаточным для записи?
Просто если указать примерный максимальный размер, то в случае когда в тесте будут много вопросов, Файл будет большим
Байконуровец вне форума Ответить с цитированием
Старый 26.01.2011, 16:53   #7
mss
Заблокирован
 
Регистрация: 27.05.2010
Сообщений: 1,099
По умолчанию

Для учебных задач фиксированные размеры строк.полей записи типиз.файла вполне оправдан.
А в боевых задачах это делается совсем иначе - сами строки хранятся в отдельном тескстовом (т.е.НЕтипизированном) файле, а в другом (типизированном) файле хранятся индексы для быстрого произвольного доступа к строкам в первом файле.
mss вне форума Ответить с цитированием
Старый 26.01.2011, 17:12   #8
Serge_Bliznykov
Старожил
 
Регистрация: 09.01.2008
Сообщений: 26,229
По умолчанию

Цитата:
А в боевых задачах это делается совсем иначе ...
Ну в реальной задаче гораздо удобнее и эффективнее использовать СУБД.
и пусть у СУБД голова болит - как хранить VARCHAR строки
Serge_Bliznykov вне форума Ответить с цитированием
Старый 26.01.2011, 17:25   #9
mss
Заблокирован
 
Регистрация: 27.05.2010
Сообщений: 1,099
По умолчанию

Цитата:
Сообщение от Serge_Bliznykov Посмотреть сообщение
Ну в реальной задаче гораздо удобнее и эффективнее использовать СУБД.
Если это не стрельба из пушки по воробьям, то да.
Если же требуется быстренько отсортировать текстовый файл бешеного размера, не используя заведомо тормозной алгоритм внешней сортировки слиянием, то городить огород с СУБД вряд ли есть резон: создать индекс и поелозить по нему как по обычному типиз.файлу - пару раз плюнуть, со всех точек зрения)
mss вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
как выводить в типизированный файл? Irisk Паскаль, Turbo Pascal, PascalABC.NET 1 23.12.2010 20:20
Типизированный файл с натуральными числами. Числа, встречающиеся 1 раз переписать в другой файл [Паскаль] mifomen Помощь студентам 7 16.12.2010 22:00
создать типизированный файл который будет использоваться в Методе Гаусса vdv08 Помощь студентам 5 23.10.2008 15:17
Как создать типизированный файл Kosya4ok Паскаль, Turbo Pascal, PascalABC.NET 3 16.12.2007 09:29