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-файлом. Первое, что мы считываем, — это общее количество вопросов в базе.