Реферат: Программа для тестовых проверок знаний

Федеральное агентство по образованию

ГОУ ВПО «Самарский ГосударственныйУниверситет»

Механико-математический факультет

Кафедра безопасности информационных систем

Специальность «Организация и

технология защиты информации»

Программа для тестовых проверок знаний

Курсовая работа

Выполнил студент

_________

Научный руководитель

_________

Работа защищена

«___» _________200__г.

оценка_______________

_________

Самара 2006

Содержание

Введение…………………………………………………………………..3

1 Этапы разработки программы…………………………………………4

         1.1Постановка задачи……………………………………………..4

         1.2Язык программирования Delphi………………………………4

         1.3Пользовательский интерфейс…………………………………5

2 Описание исходных текстовпрограммы……………………………...6

         2.1Создание простейшей кнопки…………………………………...6

         2.2Опции окна редактирования ………………………………….8

         2.3Функции……………………………………………………….10

3 Процедуры……………………………………………………………..13

         3.1Процедура работы таймера времени………………………...15

         3.2Форма с результатами тестирования (Form3/Unit3)………...16

Заключение……………………………………………………………….18

Список использованных источников……………………………………19

Приложение А…………………………………………………………….20

Приложение Б……………………………………………………………..28

Приложение В…………………………………………………………….30

<span Times New Roman""><span Times New Roman""><span Times New Roman"">Введение

              Внедрениеэлектронно-вычислительных машин, современных средств переработки и передачиинформации послужило началом нового процесса, называемым информатизациейобщества. Широкое распространение получил научно-технический прогресс. Внастоящее время одним из направлений научно-технического прогресса являетсякомпьютеризация практически всех сфер человеческой деятельности.

Сейчас компьютер является неотъемлемой частью работылюдей. Компьютеры используются в школах и университетах. Они помогаютсистематизации полученные данных, как в рабочих целях, так и в учебных.

 В данном курсовомпроекте была создана  “Программа длятекстовых проверок знаний”. Она представляет собой опросник из 15 вопросов,определяющий уровень знаний по русскому языку, полученных после начальнойшколы.

<span Times New Roman""><span Times New Roman";mso-font-kerning:0pt;font-weight:normal"><span Times New Roman"; color:black;mso-no-proof:yes"> <span Times New Roman";color:black;mso-no-proof:yes;text-decoration: none;text-underline:none">1 <span Times New Roman"">Этапы разработкипрограммы

Определениетребований к программе – один из важнейших этапов. На этом этапе подробноописывается исходная информация, и формулируются требования к результату. Крометого, описывается поведение программы в особых случаях.

При разработке программы, предназначенной для работы в Windows, требования к ней могут включать пункты о желаемомвиде диалоговых окон программы.

На этапе разработкиалгоритма необходимо определить последовательность действий, которые надовыполнить для достижения поставленной цели, получения результата. Если задачаможет быть решена различными способами, и, следовательно, возможны различныеварианты алгоритма решения, то, программист, используя некоторый критерий,выбирает наиболее подходящее решение. Затем составляется подробное составлениеалгоритма.

При программировании в Delphi основная работапрограммиста заключается в разработке подпрограмм. Задачу организациивзаимодействия разработанных подпрограмм берет на себя Delphi.Также Delphi удобна для создания программ с визуальнымикомпонентами, которые уже созданы в ней и имеют стандартный набор команд.

<span Times New Roman"; color:black;mso-no-proof:yes;text-decoration:none;text-underline:none">1.1 <span Times New Roman"">Постановказадачи

Поставленнаязадача заключалась в следующем. Необходимо создать программу для проведениятекстовых проверок знаний в форме тестирования.

<span Times New Roman"; color:black;mso-no-proof:yes;text-decoration:none;text-underline:none">1.<span Times New Roman"; color:black;font-weight:normal;mso-bidi-font-weight:bold;mso-no-proof:yes; text-decoration:none;text-underline:none">2 <span Times New Roman"; font-weight:normal;mso-bidi-font-weight:bold">Язык<span Times New Roman"">программирования <span Times New Roman";mso-ansi-language:EN-US">Delphi<span Times New Roman"">

Среда разработки Delphiориентирована, прежде всего, на создание программ длясемейства операционных систем Windows. При  этом большое внимание уделяется возможностивизуальной разработки приложений с помощью большого набора готовых компонентов,а в стандартную поставку Delphiвходят основные объекты, которые образуют удачно подобранную иерархию из 270базовых классов, позволяющих избежать ручного кодирования. Эти компонентыохватывают практически все аспекты применения современных информационныхтехнологий.

В процессе построения приложениянеобходимо выбирать из палитры компоненты, на основе которых будет строитьсяпроект. Еще до компиляции видно результаты своей работы. В этом смыслепроектирование в Delphi мало чемотличается от проектирования в интерпретирующей среде, однако после выполнениякомпиляции получаем код, который исполняется в 10 раз быстрее, чем то же самое,сделанное при помощи интерпретатора. Среда Delphiвключает в себя полный набор визуальных инструментов для скоростной разработкиприложений, поддерживающей разработкупользовательского интерфейса.

<span Times New Roman"">1.3<span Times New Roman"">          <span Times New Roman"">Пользовательскийинтерфейс

При запуске теста, показывается название программы и кнопка “Начатьтест”.

После нажатия этой кнопки начинается сам тест, при этом откроетсяновое окно, а старое закроется.

При нажатии кнопки “Начать тест” на форме отобразится вопроси четыре варианта ответа, выбор варианта ответа производится кликом мыши.Продолжение тестирования производится кнопкой “Ответить >>>” при этомна форме будут отображаться новые вопросы и четыре варианта ответа.

По окончании теста, программа подсчитает количествоправильных ответов и выставит на их основе оценку тестируемого.

2 Описание исходныхтекстов программы

unitUnit2; // модуль главнойформы

Вэтом модуле содержится несколько основных функций необходимых для работыпрограммы.

Переменные.

var

  Form2: TForm2;

  Ini: TIniFile;

  QuestNum: Integer;

  QuestCount: Integer;

  Scores: Integer;

  Wrong: Integer;

  ProgPath: string;

  Count: integer;

<span Times New Roman"">2.1 Созданиепростейшей кнопки

Простейшейи, пожалуй, наиболее часто используемой кнопкой является кнопка Button расположенная на страницебиблиотеки Standard.

Основноес точки зрения внешнего вида свойство кнопки — Caption (надпись). Внадписях кнопок можно предусматривать использование клавиш ускоренного доступа,выделяя для этого один из символов надписи. Перед символом, который долженсоответствовать клавише ускоренного доступа, ставится символ амперсанта «&». Этот символ не появляется внадписи, а следующий за ним символ оказывается подчеркнутым. Тогда пользовательможет вместо щелчка на кнопке нажать в любой момент клавишу Altсовместно с клавишейвыделенного символа.

Основноесобытие любой кнопки — OnClick, возникающее при щелчке на ней. Именнов обработчике этого события записываются операторы, которые должны выполнятьсяпри щелчке пользователя на кнопке. Помимо этого есть еще ряд событий, связанныхс различными манипуляциями клавишами и кнопками мыши.

СвойствоCancel, если его установить в true,определяет, что нажатие пользователем клавиши Escбудет эквивалентно нажатиюна данную кнопку. Это свойство целесообразно задавать равным true для кнопок «Отменить» в различных диалоговых окнах, чтобы можнобыло выйти из диалога, нажав на эту кнопку или нажав клавишу Esc.Свойство Default, если его установить в true, определяет, что нажатиепользователем клавиши ввода Enterбудет эквивалентно нажатию на данную кнопку, даже если даннаякнопка в этот момент не находится в фокусе. Правда, если в момент нажатия Enterв фокусе находится другая кнопка, то все-такисработает именно кнопка в фокусе.

Изметодов, присущих кнопкам, имеет смысл отметить один — Click. Выполнениеэтого метода эквивалентно щелчку на кнопке, т.е. вызывает событие кнопки OnClick. Этим можно воспользоваться,чтобы продублировать какими-то другими действиями пользователя щелчок накнопке. Пусть, например, вы хотите, чтобы при нажатии пользователем клавиши ссимволом «С» или «с» в любой момент работы с приложением выполнялись операции,предусмотренные в обработчике события OnClickкнопки Button1. Посколькунеизвестно, какой компонент будет находиться в фокусе в момент этого события,надо перехватить его на уровне формы. Такой перехват осуществляется, еслиустановить свойство формы KeyPreviewв true. Тогда в обработчике события формы OnKeyPress можнонаписать оператор

if(key='C' or key='c') then Button1.Click;

Еслипользователь ввел символ «С» или «с», то в результате будет выполнен обработчикщелчка кнопки Button1.

<span Times New Roman"">2.2 Опции окна редактирования<span Times New Roman"">

Вкомпоненте Edit вводимый ивыводимый текст содержится в свойстве Text.Это свойство можно устанавливать в процессе проектирования или задаватьпрограммно. Выравнивание текста, как это имело место в метках и панелях,невозможно. Перенос строк тоже невозможен. Текст, не помещающийся по длине вокно, просто сдвигается, и пользователь может перемещаться по нему с помощьюкурсора. Свойство AutoSize вокнах редактирования имеет смысл, отличный от смысла аналогичного свойстваметок: автоматически подстраивается под размер текста только высота, но неширина окна.

Окнаредактирования снабжены многими функциями, свойственными большинствуредакторов. Например, в них предусмотрены типичные комбинации «горячих» клавиш:Ctrl-C— копирование выделенноготекста в буфер обмена Clipboard(команда Copy), Ctrl-X— вырезание выделенного текста в буфер Clipboard (команда Cut), Ctrl-V— вставка текста из буфера Clipboard в позицию курсора (команда Paste), Ctrl-Z— отмена последней команды редактирования.

Editможно использовать и простокак компоненты отображения текста. Для этого надо установить в true его свойство ReadOnly и целесообразно установить AutoSelect в false. В этом случаепользователь не сможет изменять отображаемый текст, и окно редактированиястановится подобным меткам. При использовании окон редактирования для вывода,ввода и редактирования чисел необходимо использовать функции взаимногопреобразования строк и чисел. Для вывода это описанные при рассмотрении метокфункции FloatToStr и IntToStr. При вводе это функции StrToFloat — преобразование строки взначение с плавающей запятой, и StrToInt— преобразование строки в целое значение. Если вводимый текст не соответствуетчислу (например, содержит недопустимые символы), то функции преобразованиягенерируют исключение EConvertError.

Этоткод обеспечивает сообщение пользователю об ошибке ввода и предотвращаетошибочные вычисления. Впрочем, это не лучший вариант предотвратить ошибочныйввод, поскольку пользователь узнает о своей ошибке только после того, какпрограмма пытается использовать введенные данные. Лучше, если пользовательпросто не сможет ввести неправильные символы. Например, если вы хотите, чтобыпользователь мог вводить в окно редактирования Edit только цифры и символ точки, вы можете в обработчиксобытия OnKeyPress этого компонента вставить оператор:

ifnot (Key in['0'..'9', ',']) then Key := #0;

Этотоператор подменит все символы, кроме цифр и запятой, нулевым символом, которыйне занесется в текст окна Edit.

Внешний вид формы (Form2) в дизайнере форм.Иерархия расположения компонентов на форме приведена на рис.1.

.<img src="/cache/referats/22704/image002.jpg" v:shapes="_x0000_i1025">

Рисунок 1 — Иерархия расположения компонентов на форме

2.3 Функции

Нижея приведу описание  функций:

1)функция, ss2nnкоторая переводит секунды в минуты + секунды в строковом формате (необходимодля подсчета времени прошедшего с начала тестирования):

functionTForm2.ss2nn(Seconds: Integer): String;

var

  nMin, nSec: Integer;

begin

  {Проверяем, меньше чем1/Min}

  if Seconds < 60thenResult:= '0 минут '+ IntToStr(Seconds) + ' секунд'

  else begin

    {Определяемминуты}

    nMin:= Seconds div 60;

    {Определяемсекунды}

    nSec := Seconds — (nMin * 60);

    {Возвращаемрезультат}

    Result:= IntToStr(nMin) + ' минут '+ IntToStr(nSec)+ ' секунд';

  end;

end;

Функции надо передать количество секунд и в результате мы получимзначение типа string. Например, еслимы передадим функции число 70, то получим в результате 1 минут 10 секунд.

2) процедура  ShowQuestion- функция, которая загружает текст вопроса и варианты ответов, а так жепоказывает текст вопроса и варианты ответов на текстовых метках.

procedureTForm2.ShowQuestion;

var

  Count, i: Integer;

begin

  if (QuestNum >QuestCount) and (QuestNum > 0) then

  begin

  { Если номер текущего вопроса больше чем должно быть показано и кол-вовопросов  >0  то выполняем следующее....}

    Form3 := TForm3.Create(self);//создаем форму с результатами тестирования

    res:= (Scores*100) divQuestCount;// узнаем кол-во правильных ответов

    Form3.Gauge1.Progress:= res;// выводим правильные ответы на графике в %

    Form3.Gauge2.Progress:= 100-res; //выводим кол-вонеправильных ответов

    //сколько всего вопросов....

    Form3.Label5.Caption:='Вопросов в тесте: '+IntToStr(QuestCount);

    //пишем на labelкол-во правильных ответов

    Form3.Label3.Caption := IntToStr(Scores);

    //тоже самое,только неправильные

    Form3.Label4.Caption:= IntToStr(Wrong);

    Timer1.Enabled:=False;//выключаем таймервремени

    Form3.TimeLabel.Caption:=TimeLabel.Caption;//выводим время на labelвремени

    Form3.ShowModal;// наконец показываем форму с результатами

    Form2.close;//закрываем форму с вопросами   end;

Если данное условие не выполняется, то…

Рассмотрим это фрагмент функции более подробно. Для загрузкивопросов я использовал класс TIniFile– этот класс используется для работы с ini-файлами<span Times New Roman",«serif»; mso-fareast-font-family:«Times New Roman»;color:black;mso-ansi-language:RU; mso-fareast-language:RU;mso-bidi-language:AR-SA">[1].Список вопросов и ответов хранится в специально сформированном файле

Test.ini,откудапрограмма их загружает. Вот вырезка из файла Test.ini:

 

[Тест]

Количество Вопросов=15

Название теста = Проверка знаний по русскому языку

[Вопрос №1]

Текст вопроса = Вставьте проверяемые безударные гласные А или О.Укажите слова с буквой О.

Текст кнопки 1 = ХВ__ТАТЬ

Текст кнопки 2 = К__РАТЕЛЬНЫЙ

Текст кнопки 3 = НАК__ПИТЬ ДЕНЬГИ

Текст кнопки 4 = НАСЛ__ЖДАТЬСЯ

Правильный вариант = 3

Ниже приведена процедура загрузки вопроса и вариантов ответов:

  //загружаем текст вопроса

  Label1.Caption:= Ini.ReadString('Вопрос №'+ inttostr(QuestNum),'Текст вопроса', 'Вопросотсутствует');

  //загружаем варианты ответов

  RadioButton1.Caption:= Ini.ReadString('Вопрос №'+ inttostr(QuestNum),'Текст кнопки 1', 'ERROR');

  RadioButton2.Caption:= Ini.ReadString('Вопрос №'+ inttostr(QuestNum), 'Текст кнопки 2', 'ERROR');

  RadioButton3.Caption:= Ini.ReadString('Вопрос №'+ inttostr(QuestNum), 'Текст кнопки 3', 'ERROR');

  RadioButton4.Caption:= Ini.ReadString('Вопрос №'+ inttostr(QuestNum),'Текст кнопки 4', 'ERROR');

  {Процедуразагрузки завершена}

end;

В данной функции метод ReadStringкласса TIniFileсобственно и производит загрузкуначальных значений меток (label) с вопросом и вариантами ответов.

3 Процедуры

1)  Процедура – обработчиксобытия нажатия на кнопку «Начать  тест»(Button1):

procedureTForm2.Button1Click(Sender: TObject);

begin

Count:=0;

Timer1.Enabled:=True;

Label10.Visible:=True;

TimeLabel.Visible:=True;

  BitBtn1.Visible := true;

  Panel3.Visible := true;

  Button1.Visible := false;

  Label9.Visible:=True;

  BitBtn1.OnClick(self);

end;

Вовремя выполнения этой процедуры происходит показ всех нужных для правильнойработы программы компонентов, запуск таймера, а также скрытие самой кнопки«Начать тест».

2) процедура – обработчик события нажатия на кнопку«Ответить»(Button):

procedureTForm2.BitBtn1Click(Sender: TObject);

var

  Answer, CA: Integer;

begin

  Answer := Ini.ReadInteger('Вопрос №'+inttostr(QuestNum), 'Правильный вариант', -1);

  ifAnswer< 0thenException.Create('В файле свопросами не написан правильный вариант');

  ca := 0;

  if RadioButton1.Checked then

    Ca := 1;

  if RadioButton2.Checked then

    Ca := 2;

  if RadioButton3.Checked then

    Ca := 3;

  if RadioButton4.Checked then

    Ca := 4;

  if Ca = Answer then

    inc(Scores)

  else

    inc(Wrong);

  inc(QuestNum);

  Label6.Caption := 'Номер вопроса:'+ IntToStr(QuestNum);

  Label8.Caption := 'Правильных ответов:'+ IntToStr(Scores);

  Label7.Caption := 'Неправильных ответов: '+ IntToStr(Wrong);

  ShowQuestion;

end;

Читаем Правильный ответ израбочего iniфайла программы:

  Answer:= Ini.ReadInteger('Вопрос №'+ inttostr(QuestNum), 'Правильный вариант', -1);

Собственно определяем правильныйответ или нет

  ifCa = Answer then

    inc(Scores)

  else

    inc(Wrong);

Оператор Incувеличиваетзначение указанной переменной на 1. Если да то +1 к правильным если нет, то +1к неправильным.

3.1 Процедураработытаймеравремени

procedureTForm2.Timer1Timer(Sender: TObject);

begin

Count:=Count+1;

TimeLabel.Caption:=ss2nn(Count);

end;

Начальноезначение переменной Count– 0, с каждой секундойзначение переменной увеличивается на 1, затем функцией ss2nnзначение переводится всекунды + минуты (если нужно) и результат выводится на TimeLabel. На рисунке 2 приведенаиллюстрация, демонстрирующая работу программы.

<img src="/cache/referats/22704/image004.jpg" v:shapes="_x0000_i1026">

Рисунок 2 – Внешний вид программы

3.2 Форма срезультатами тестирования (Form3/Unit3)

Послетого как программа закончила тестирование, она подсчитывает результаты, создаети показывает форму с результатами тестирования. Вид формы длярезультатов тестирования в дизайнере форм Delphi приведен нарисунке 3.

<img src="/cache/referats/22704/image006.jpg" v:shapes="_x0000_i1027">

Рисунок 3 — Видформы  для результатов тестирования вдизайнере форм Delphi

Кнопка “Ok” на Form3 закрываетпрограмму.

Процедуры.

Процедура– обработчик создания формы с результатами тестирования описана в предыдущеммодуле (Unit2). Рассмотрим работу таймера, который собственно выставляетоценку.

procedureTForm3.Timer1Timer(Sender: TObject);

begin

if(Gauge1.Progress < 40) then label7.Caption:='2';

if(Gauge1.Progress  >= 40)and(Gauge1.Progress <60) then label7.Caption:='3';

if(Gauge1.Progress >=60) and (Gauge1.Progress <=90)

thenlabel7.Caption:='4'; if Gauge1.Progress >90thenlabel7.Caption:='5'; end;

<span Times New Roman"">Заключение

Внастоящее время в нашу жизнь широко внедряются информационные технологии. Насегодняшний день, наверное, не осталось такой области, где бы они ниприменялись. Данная программа может применяться для оценки уровня знаний порусскому языку в школах, ВУЗах, техникумах или для оценки собственных познанийв культуре правописания.Её пользовательский интерфейс делает её простой,понятной и доступной.

<span Times New Roman"">                 <span Times New Roman""><span Times New Roman"">Список использованных источников<span Times New Roman"">

1.<span Times New Roman"">    

Delphi 5 – М.: Питер,2002.

2.<span Times New Roman"">    

A. Разработка программных приложений на Delphi 6 –М.: Киев, 2000.

3.<span Times New Roman"">    

В. A. Turbo Pascal 6.0, 7.0. М.: Москва, 1998.

4.<span Times New Roman"">    

Delphi 5 – М.: Москва, 1999.

5.<span Times New Roman"">    

Delphi 5 – М.: Москва,1999.

6.<span Times New Roman"">    

А.С. Object Pascal – М.: Москва, 2000.

7.<span Times New Roman"">    

8.<span Times New Roman"">    

C. <st1:place w:st=«on»>Delphi</st1:place> – М.:Питер, 2000.

 

Приложение А

Модуль формы с вопросами.

programProject1;

uses

  Forms,

  Unit2 in 'Unit2.pas'{Form2},

  Unit3 in 'Unit3.pas'{Form3};

{$R *.res}

begin

  Application.Initialize;

  Application.CreateForm(TForm2, Form2);

  Application.Run;

end.

unitUnit2; // модульглавнойформы

interface

uses

  Windows, Messages, SysUtils, Variants,Classes, Graphics, Controls, Forms,

  Dialogs, StdCtrls, ExtCtrls, Buttons,IniFiles, XPMan;

type

  TForm2 = class(TForm)

    Panel1: TPanel;

    Label1: TLabel;

    BitBtn1: TBitBtn;

    Panel2: TPanel;

    Label5: TLabel;

    Label6: TLabel;

    Label7: TLabel;

    Label8: TLabel;

    Label9: TLabel;

    Button1: TButton;

    Panel3: TPanel;

    Label2: TLabel;

    RadioButton1: TRadioButton;

    Label3: TLabel;

    RadioButton2: TRadioButton;

    Label4: TLabel;

    RadioButton3: TRadioButton;

    RadioButton4: TRadioButton;

    Label11: TLabel;

    Timer1: TTimer;

    Label10: TLabel;

    TimeLabel: TLabel;

    XPManifest1: TXPManifest;

    procedure FormCreate(Sender:TObject);

    procedure BitBtn1Click(Sender:TObject);

    procedure Button1Click(Sender:TObject);

    procedure FormClose(Sender: TObject;var Action: TCloseAction);

    procedure Timer1Timer(Sender:TObject);

  private

    { Private declarations }

    {Обьявляем необходимые переменные}

    QuestNum: Integer;

    QuestCount: Integer;

    Scores: Integer;

    Wrong: Integer;

    ProgPath: string;

  public

  res: Integer;

  {Функция для перевода секунд в минуты +секунды}

  functionss2nn(Seconds: Integer): String;

  procedureShowQuestion;  {!!! Главнаяпроцедура для загрузки и показа

                           вопросов и ответов}

  end;

var

  Form2: TForm2;

  Ini: TIniFile;

  Count: integer;

implementation

usesUnit3;

{$R *.dfm}

{ TForm2 }

functionTForm2.ss2nn(Seconds: Integer): String;

var

  nMin, nSec: Integer;

begin

  {Проверяем, меньшечем 1/Min}

  if Seconds < 60thenResult := '0 минут '+IntToStr(Seconds) + ' секунд'

  else begin

    {Определяем минуты}

    nMin := Seconds div 60;

    {Определяемсекунды}

    nSec := Seconds — (nMin * 60);

    {Возвращаемрезультат}

    Result := IntToStr(nMin) + 'минут '+ IntToStr(nSec) + ' секунд';

  end;

end;

procedureTForm2.ShowQuestion;

var

  Count, i: Integer;

begin

  if (QuestNum > QuestCount) and(QuestNum > 0) then

  begin

  {если кол-вовопросов больше чем уже показанных и кол-во вопросов

  >0 то выполняемследушее....}

    Form3 := TForm3.Create(self);//создаем форму с результатами тестирования

    res:= (Scores* 100) divQuestCount;// узнаем кол-воправильных ответов

    Form3.Gauge1.Progress:= res; // выводим правильные ответы на графике в %

    Form3.Gauge2.Progress:= 100-res; //выводим кол-во неправильных ответов

    //сколько всеговопросов....

    Form3.Label5.Caption:= 'Вопросов в тесте:'+IntToStr(QuestCount);

    //пишем на labelкол-во правильных ответов

    Form3.Label3.Caption := IntToStr(Scores);

    //тоже самое, только неправильные

    Form3.Label4.Caption:= IntToStr(Wrong);

    Timer1.Enabled:=False; //выключаем таймервремени

    Form3.TimeLabel.Caption:=TimeLabel.Caption; //выводим время на labelвремени

    Form3.ShowModal;// наконец показываем форму с результатами

    Form2.close; //закрываем форму с вопросами

  end;

 

  //загружаем текствопроса

  Label1.Caption:= Ini.ReadString('Вопрос №'+ inttostr(QuestNum), 'Текст вопроса', 'Вопросотсутствует');

  //загружаемварианты ответов

  RadioButton1.Caption:= Ini.ReadString('Вопрос №'+ inttostr(QuestNum), 'Текст кнопки 1', 'ERROR');

  RadioButton2.Caption := Ini.ReadString('Вопрос №'+ inttostr(QuestNum), 'Текст кнопки 2', 'ERROR');

  RadioButton3.Caption := Ini.ReadString('Вопрос №'+ inttostr(QuestNum), 'Текст кнопки 3', 'ERROR');

  RadioButton4.Caption := Ini.ReadString('Вопрос №'+ inttostr(QuestNum), 'Текст кнопки 4', 'ERROR');

  {Процедура загрузки завершена}

end;

{Процедура созлания формы с вопросами}

procedureTForm2.FormCreate(Sender: TObject);

begin

{Получаем путь папки где находится наша прога}

  ProgPath := ExtractFileDir(Application.ExeName) + '';

  Ini := TIniFile.Create(ProgPath + 'Test.ini');

  Label1.Caption := Ini.ReadString('Тест', 'Название теста', 'Тест без названия');

  QuestNum := 0;

  Scores := 0;

  wrong := -1;

  QuestCount := Ini.ReadInteger('Тест', 'Количество Вопросов ', -2);

  Label5.Caption := 'Всего вопросов в тесте: '+ IntToStr(QuestCount);

end;

procedureTForm2.BitBtn1Click(Sender: TObject);

var

  Answer, CA: Integer;

begin

  Answer := Ini.ReadInteger('Вопрос №'+ inttostr(QuestNum),'Правильный вариант', -1);

  ifAnswer< 0thenException.Create('В файле с вопросами не написан правильныйвариант');

  ca := 0;

  if RadioButton1.Checked then

    Ca := 1;

  if RadioButton2.Checked then

    Ca := 2;

  if RadioButton3.Checked then

    Ca := 3;

  if RadioButton4.Checked then

    Ca := 4;

  if Ca = Answer then

    inc(Scores)

  else

    inc(Wrong);

  inc(QuestNum);

  Label6.Caption := 'Номер вопроса: '+ IntToStr(QuestNum);

  Label8.Caption := 'Правильных ответов: '+ IntToStr(Scores);

  Label7.Caption := 'Неправильных ответов: '+ IntToStr(Wrong);

  ShowQuestion;

  RadioButton1.Checked:=False;

  RadioButton2.Checked:=False;

  RadioButton3.Checked:=False;

  RadioButton4.Checked:=False;

end;

procedureTForm2.Button1Click(Sender: TObject);

begin

Count:=0;

Timer1.Enabled:=True;

Label10.Visible:=True;

TimeLabel.Visible:=True;

  BitBtn1.Visible := true;

  Panel3.Visible := true;

  Button1.Visible := false;

  Label9.Visible:=True;

  BitBtn1.OnClick(self);

end;

procedureTForm2.FormClose(Sender: TObject; var Action:TCloseAction);

begin

 // Ini.Free;

end;

procedureTForm2.Timer1Timer(Sender: TObject);

begin

Count:=Count+1;

TimeLabel.Caption:=ss2nn(Count);

end;

end.

<

еще рефераты
Еще работы по программированию, базе данных