Delphi: Тест для Большого Дяди на все 100!

Лозовский Александр

Xakep, номер #055, стр. 055-066-2


6. Оценка. Самая модная оценка такая: за 1 вопрос (сколько бы там ни было вариантов) - максимум 1 балл. За каждый правильный ответ, соответственно, 1/количество вариантов ответов. Теперь представь такую ситуацию: в твоем тесте 38 вопросов - по 1 баллу за вопрос. А теперь ответь мне, разве красиво будет выглядеть фраза: "Вы набрали 14 баллов из 38 возможных"? Конечно нет, человеческий мозг лучше воспринимает круглые цифры с большим количеством нулей :). Поэтому приводи максимальное число баллов к 100 с помощью пропорции. Согласись, 50 из 100 - это круто :).

Реквизит

На этот раз нам с тобой ничего не придется качать, потому что все вопросы и ответы будут храниться в XML таблице, а для ее использования нужен только файл midas.dll, который находится в системной директории - c:\windows\system для Win 9x или \system32 для NT-XP. Достаточно лишь зарегистрировать его с помощью regsvr32.exe (он находится там же, а ежели у тебя в системном каталоге их нет, что подозрительно, то бери это добро на диске или на www.cydsoft.com/vr-online), и можно работать. Регистрируй ручками: Пуск -> Выполнить -> с:\windows\system\regsvr32.exe с:\windows\system\midas.dll -> Ok. Или программно, тогда тебе в этом помогут процедуры WinExec или CreateProcess. Хотя это, конечно, изврат.

Часть 0 - Ваяем таблицу

Для начала неплохо бы написать оболочку для добавления вопросов в базу - девяностые годы прошли, и мы обязаны позаботиться об удобстве пользователя. Надеюсь, ты уже запустил Delphi и зарегистрировал midas.dll? Тогда поехали.

Клади на форму компоненты DataSource и ClientDataSet1 (из вкладки Data Access палитры компонент). Свяжи эти два компонента, для этого свойство DataSet у компонента DataSource должно быть ClientDataSet1. Теперь выдели компонент ClientDataSet1 и дважды щелкни на его свойство FieldDefs - появится окно редактора полей. Выдели его и нажми клавишу Insert (на клавиатуре, где-то чуть правее Enter :)) или кнопочку Add в самом редакторе. Появится новое поле, у которого есть 3 занимательных свойства:

DataType - тип (численные, строки, memo и т.п.)

Name - имя поля

Size - размер

Создай 4 новых поля и расставляй им следующий свойства:

Поле 0:

Name - Key1, DataType - ftAutoInc. Это будет ключевое поле.

Поле 1:

Name - Quest, DataType - ftString, Size - 50. Оно, как нетрудно догадаться, будет содержать вопрос теста, а максимальный размер его будет 50 символов. Этого должно хватить, хотя на всякий пожарный можно сделать и больше.

Поле 2:

Name - Answers, DataType - ftMemo, Size - ставь 500. Чем больше, тем лучше, потому что оно будет содержать варианты ответов, а как я уже говорил, их может быть произвольное количество.

Поле 3:

Name - CorrectAnswer, DataType - ftString, Size-10. Тут будут номера правильных ответов. "Так что ж ты поставил тип String, раз это номера?" - спросит меня знакомый с информатикой читатель. А потому, батенька, отвечу я ему, что так проще и удобнее, поскольку юзер вводит номера в поле Edit в виде String, да мне и не нужно работать с ними, как с числами. В общем, пока поверь мне на слово, а потом поймешь, насколько это весело :).

Назад на стр. 055-066-1  Содержание  Вперед на стр. 055-066-3