Delphi. Учимся на примерах
Шрифт:
⇖ Разработка меню рассматривается в главе 6, "Программа просмотра рисунков".
Рис. 13.1. Меню для программы-теста
Полученная форма должна примерно соответствовать рис. 13.2.
Рис. 13.2. Форма программы-теста
Разработка
Для начала, объявим все глобальные переменные:
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; //для работы с каждым символом отдельно
Добавим в раздел uses ссылку на модуль IniFiles, который потребуется для работы с классом TIniFile. Мы также разработаем четыре собственные процедуры. Объявим их как закрытые члены класса формы:
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;
Поделиться:
Популярные книги
Моя на одну ночь
Любовные романы:
современные любовные романы
короткие любовные романы
5.50
рейтинг книги
Черный Маг Императора 8
8. Черный маг императора
Фантастика:
юмористическое фэнтези
попаданцы
аниме
5.00
рейтинг книги
Измена. Отбор для предателя
1. Отбор для предателя
Фантастика:
фэнтези
5.00
рейтинг книги
Кодекс Крови. Книга II
2. РОС: Кодекс Крови
Фантастика:
фэнтези
попаданцы
аниме
5.00
рейтинг книги
Шаг в бездну
3. Перешагнуть пропасть
Фантастика:
фэнтези
космическая фантастика
7.89
рейтинг книги
Часовая битва
6. Часодеи
Детские:
детская фантастика
9.38
рейтинг книги
Вечная Война. Книга II
2. Вечная война.
Фантастика:
юмористическая фантастика
космическая фантастика
8.37
рейтинг книги
Хроники странного королевства. Вторжение. (Дилогия)
110. В одном томе
Фантастика:
фэнтези
9.38
рейтинг книги
Часовой ключ
1. Часодеи
Фантастика:
фэнтези
9.36
рейтинг книги
Инвестиго, из медика в маги
1. Инвестиго
Фантастика:
фэнтези
городское фэнтези
попаданцы
5.00
рейтинг книги
Кротовский, может, хватит?
3. РОС: Изнанка Империи
Фантастика:
попаданцы
альтернативная история
аниме
7.50
рейтинг книги
Драконий подарок
1. Королевская академия Драко
Любовные романы:
любовно-фантастические романы
7.30
рейтинг книги
Очешуеть! Я - жена дракона?!
Фантастика:
юмористическая фантастика
5.43
рейтинг книги
Идеальный мир для Лекаря 9
9. Лекарь
Фантастика:
боевая фантастика
юмористическое фэнтези
6.00