Текст программы
Листинг 10.2. Программа тестирования.
/* Универсальная.программа тестирования. Тест загружается из файла, имя которого должно быть указано в командной строке. Программа демонстрирует создание и настройку компонентов во время работы программы. */ # include <vcl.h> #pragma hdrstop #include "tester_.h" #include <stdio.h // для доступа к функции sscanf #pragma package(smart_init) #pragma resource "*.dfm" TForm1 *Form1; // форма int f; // дискриптор файла теста // имя файла теста берем из командной строки int level[4];// кол-во правильных ответов, необходимое // для достижения уровня AnsiString mes[4]; // сообщение о достижении уровня TVopros Vopros; // вопрос int otv; // номер выбранного ответа int right =0; // кол-во правильных ответов // функции, обеспечивающие чтение вопроса из файла теста int Getlnt(int f); // читает целое int GetString(int f, AnsiString *st); // читает строку // конструктор __fastcall TForml::TForml(TComponent* Owner): TFormfOwner) { int i; int left =10; // создадим радиокнопки для выбора // правильного ответа, но сделаем их невидимыми for (i =0; i < 4; i++) { // создадим радиокнопку RadioButton[i] = new TRadioButton(Forml); // установим значения свойств RadioButton[i] › Parent = Forml; RadioButton[i] › Left = left; RadioButton[i] › Width = Forml › ClientWidth – left – 20; RadioButton[i] › Visible = false; RadioButton[i] › Checked = false; // зададим функцию обработки события Click RadioButton[i] › OnClick = RadioButtonClick; } } void __fastcall TForml::FormActivate(TObject *Sender) { AnsiString st; // имя файла теста должно быть указано в командной строке int n = ParamCount(); if (n < 1) { Labell › Font › Style = TFontStyles()" fsBold; Labell › Caption = "В командной строке запуска надо задать имя файла теста"; Buttonl › Tag = 2; return; } // открыть файл теста f = FileOpen(ParamStr(1), fmOpenRead); if (f == – 1) { Labell › Font › Style = TFontStyles()" fsBold; Labell › Caption = "Ошибка доступа к файлу теста " + ParamStr(l); Buttonl-XTag = 2; return; } // вывести информацию о тесте GetString(f, Sst); // прочитать название теста Forml › Caption = st; GetString(f, sst); // прочитать вводную информацию Labell › Width = Forml › ClientWidth – Labell › Left – 20; Labell › Caption = st; Labell › AutoSize = true; // прочитать информацию об уровнях оценки for (int i=0; i<4; i++) { level[i] = Getlnt(f); GetString(f, &mes[i]); } } // читает из файла очередной вопрос