Delphi. Учимся на примерах | страница 47



>type

>TForm1 = class(TForm)

> …

>private

> { Private declarations }

> procedure start; //начало теста

> procedure question_select; //выбор вопроса

> procedure vars(var variant: integer); {сортировка и определение правильного варианта ответа}

procedureverno(); {проверка: правильно ли ответил пользователь}

>public

> { Public declarations }

>end;

Теперь создадим сами процедуры в разделе implementation. Процедура Start:

>procedure TForm1.start();

>begin

> Randomize; //Включаем генератор случайных чисел

> for i:=1 to n do mass[i] := 0; //n – количеству вопросов

> {$I-} //отключаем контроль ошибок ввода/вывода.

> //делаем все элементы видимыми для пользователя

> Memo1.Visible:= True;

> RadioGroup1.Visible:= True;

> Label1.Visible:= True;

> an1.Visible:= True;

> an2.Visible:= True;

> an3.Visible:= True;

> an4.Visible:= True;

> p1.Visible:= True;

> p2.Visible:= False;

> p3.Visible:= False;

> p4.Visible:= False;

> p5.Visible:= False;

> balls:= 0;

> Label2.Visible:= False; //прячем результаты

> Label1.Caption:= 'Первый вопрос:';

> dir2:= 'C:\base.bsd'; //путь к расшифрованной базе

> //копируем зашифрованную базу на диск С:

> CopyFile(PChar(ss), PChar(dir2), True);

> //связываем переменную f1 с зашифрованным ini-файлом

> AssignFile(f1, ss);

> //связываем переменную f2 с файлом C:\base.bsd

> AssignFile(f2, dir2);

> Reset(f1); //открываем первый файл на чтение

> Rewrite(f2); //второй – на запись

> while not Eof(fl) do

> begin //пока не достигнут конец первого файла

>  Read(f1, cop); //считываем один символ из файла

>  сор:= Chr(Ord(cop) xor 101); //расшифровываем символ

>  Write(f2, сор); //записываем расшифрованный символ в файл

end;

> CloseFile(f1); //закрываем первый файл

> CloseFile(f2); //закрываем второй файл

> {$I+} //включаем контроль ошибок ввода/вывода

Win:= TIniFile.Create(dir2); //работаем с ini-файлом

> //считываем количество вопросов в базе

> ss:= Win.ReadString('num', 'num', ss);

> //преобразовываем строку в число и записываем значение в n

n:= StrToInt(ss);

> vopr:=Random(4) + 1;

>//случайное число от 1 до 4

vars(vopr); {передаем число процедуре vars, которая сортирует варианты ответов}

>end;

Эта процедура начинает игру. Сначала делаем все элементы видимыми и прячем метку, отображающую результат прохождения теста. Затем открываем файл, содержащий вопросы, и считываем из него по одному символу. Каждый байт расшифровывается особо и записывается в отдельный файл. Далее мы работаем с расшифрованным файлом как с обычным ini-файлом. Первое, что мы считываем, — это общее количество вопросов в базе.