Иллюстрированный самоучитель по C++ Builder

Текст программы

Листинг 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]); } }
// читает из файла очередной вопрос
Если Вы заметили ошибку, выделите, пожалуйста, необходимый текст и нажмите CTRL + Enter, чтобы сообщить об этом редактору.