Delphi. Учимся на примерах - [26]

Шрифт
Интервал

>end;


>var

> Form1: TForm1;

> i, a, n, balls, vopr: integer; {различные счетчики и переменные для подсчета баллов}

> dir, dir2, ss, zz, yes: string; {путь к файлу с вопросами, к программе и расшифрованной базе}

> win: TIniFile; //переменная для работы с ini-файлами

> mass: array[1..100] of integer; {содержит номера уже заданных вопросы, чтобы они не повторялись}

> f1, f2: file of char; //переменные для работы с файлами

> сор: char; //для работы с каждым символом отдельно


>implementation

>{$R *.dfm}


>procedure TForm1.vars(var variant: integer);

>begin

> //вызываем процедуру выбора случайного вопроса question_select();

> case variant of

> 1:

>  begin

>   Win:= TIniFile.Create(dir2); //открываем ini-файл

>   //считываем вопрос

>   Memo1.Text:= Win.ReadString('Q', IntToStr(a), Memo1.Text);

>   //считываем правильный вариант ответа

>   an1.Caption:= Win.ReadString('A', IntToStr(a), an1.Caption);

>   //считываем три неверных варианта к данному вопросу

>   an2.Caption:= Win.ReadString('W1', IntToStr(a), an2.Caption);

>   an3.Caption:= Win.ReadString('W2', IntToStr(a), an3.Caption);

>   an4.Caption:= Win.ReadString('W3', IntToStr(a), an4.Caption);

>   Win.Free; //освобождаем ini-файл

>   //помечаем первый вариант как правильный

>   yes:= an1.Caption;

>  end;

> 2:

>  begin

>   Win:= TIniFile.Create(dir2);

>   Memo1.Text:= Win.ReadString('Q', IntToStr(a), Memo1.Text);

>   an2.Caption:= Win.Readstring('A', IntToStr(a), an2.Caption);

>   an1.Caption:= Win.Readstring('W1', IntToStr(a), an1.Caption);

>   an3.Caption:= Win.ReadString('W2', IntToStr(a), an3.Caption);

>   an4.Caption:= Win.ReadString('W3', IntToStr(a), an4.Caption);

>   Win.Free;

>   yes: = an2.Caption;

>  end;

> 3:

>  begin

>   Win:= TIniFile.Create(dir2);

>   Memo1.Text:= Win.ReadString('Q', IntToStr(a), Memo1.Text);

>   an3.Caption:= Win.ReadString('A', IntToStr(a), an3.Caption);

>   an2.Caption:= Win.ReadString('W1', IntToStr(a), an2.Caption);

>   an1.Caption:= Win.ReadString('W2', IntToStr(a), an1.Caption);

>   an4.Caption:= Win.ReadString('W3', IntToStr(a), an4.Caption);

>   Win.Free;

>   yes:= an3.Caption;

>  end;

> 4:

>  begin

>   Win:= TIniFile.Create(dir2);

>   Memo1.Text:= Win.ReadString('Q', IntToStr(a), Memo1.Text);

>   an4.Caption:= Win.ReadString('A', IntToStr(a), an4.Caption);

>   an2.Caption:= Win.ReadString('Wl', IntToStr(a), an2.Caption);

>   an3.Caption:= Win.ReadString('W2', IntToStr(a), an3.Caption);

>   an1.Caption:= Win.ReadString('W3', IntToStr(a), an1.Caption);

>   Win.Free;

>   yes:= an4.Caption;

>  end;

> end;

>end;


>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;


>procedure TForm1.question_seleсt();

>label ran; //метка ran для быстрого перехода

>begin

> Randomize;

>ran:

> a:=Random(n); //выбираем случайный вопрос из базы

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

> for i:=1 to n do

>  if mass[i] = a then goto ran;

> for i:=1 to n do

>  if mass[i] = 0 then begin

>   mass[i]:= а; {записываем номер вопроса, чтобы не задавать его больше }

>   Break;

>  end;

> //сбрасываем флажки со всех вариантов ответов

> an1.Checked:= False;

> an2.Checked:= False;

> an3.Checked:= False;

> an4.Checked:= False;

>end;


>procedure TForm1.verno();

>begin

> if an1.Checked then

>  if yes = an1.Caption then balls:= balls + 1;

> if an2.Checked then

>  if yes = an2.Caption then balls:= balls + 1;

> if an3.Checked then

>  if yes = an3.Caption then balls:= balls + 1;

> if an4.Checked then

>  if yes = an4.Caption then balls:= balls + 1;

>end;


>procedure TForm1.N2Click(Sender: TObject);

>begin

> Randomize;

> //начинаем обзор с текущего каталога

> Open1.InitialDir:= GetCurrentDir;

> if not Open1.Execute then ShowMessage('Вы не выбрали файл!')


Рекомендуем почитать
Графика DirectX в Delphi

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


Вторая жизнь старых компьютеров

Сейчас во многих школах, институтах и других учебных заведениях можно встретить компьютеры старого парка, уже отслужившие свое как морально, так и физически. На таких компьютерах можно изучать разве что Dos, что далеко от реалий сегодняшнего дня. К тому же у большинства, как правило, жесткий диск уже в нерабочем состоянии. Но и выбросить жалко, а новых никто не дает. Различные спонсоры, меценаты, бывает, подарят компьютер (один) и радуются, как дети. Спасибо, конечно, большое, но проблемы, как вы понимаете, этот компьютер в общем не решает, даже наоборот, усугубляет, работать на старых уже как-то не хочется, теперь просто есть с чем сравнивать.


DirectX 8. Начинаем работу с DirectX Graphics

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


Симуляция частичной специализации

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


Обработка событий в С++

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


Питон — модули, пакеты, классы, экземпляры

Python - объектно-ориентированный язык сверхвысокого уровня. Python, в отличии от Java, не требует исключительно объектной ориентированности, но классы в Python так просто изучить и так удобно использовать, что даже новые и неискушенные пользователи быстро переходят на ОО-подход.