Текст программы
void __fastcall TForml::ButtonlClick(TObject *Sender) { bool ok; // результат чтения из файла очередного вопроса switch (Buttonl-XTag) { case 0: // щелчок на кнопке ОК в начале работы программы // прочитать и вывести первый вопрос GetVopros(SVopros); ShowVopros(Vopros); Buttonl › Caption = "Дальше"; Buttonl › Enabled = false; Button1 › Tag = 1; break; case 1: // щелчок на кнопке Дальше if (otv == Vopros.rOtv) // выбран правильный ответ right++; EraseVopros(}; ok = GetVopros(SVopros); if (ok) ShowVopros(Vopros); else // вопросов больше нет { FileClose(f); // вывести результат AnsiString st; // сообщение int i; // номер достигнутого уровня Form1 › Caption = "Результат тестирования"; st.printf("Правильных ответов: %i\n",right); // определим оценку i = 0; // предположим, что испытуемый // ответил на все опросы while ((right < level[i]) && (i < 3)) i++; st = st + mes[i]; Labell › Caption = st; Button1 › Caption = "OK"; Buttonl › Enabled = true; Buttonl › Tag =2; } break; case 2: // щелчок на кнопке OK в конце работы программы Form1 › Close(}; // завершить работу программы } } // Функция GetString читает строку из файла // значение функции – количество прочитанных символов int GetString(int f, AnsiString *st) { unsigned char buff[300]; // строка (буфер) unsigned char *p = buf; // указатель на строку int n; // кол-во прочитанных байт (значение функции FileRead) int len =0; // длина строки n = FileRead(f, p, 1); while (n!= 0) { if (*p == '\r') { n = FileRead(f, p, 1); // прочитать '\n' break; } len++; P++; n = FileRead(f, p, 1); } *p = '\0'; if (len!=0) st › printf("%s", buf); return len; } // читает из файла целое число int Getlnt(int f) { char buf[20]; // строка (буфер) char *p = buf; // указатель на строку int n;// кол-во прочитанных байт (значение функции FileRead) int a; // число, прочитанное из файла n = FileRead(f, p, 1); while ((*p >= '0') (*p <= '9') && (n > 0)) { P++; n = FileRead(f, p, 1); } if (*p == '\r') n = FileRead(f, p, 1) // прочитать '\n' *p = '\0'; // изображение числа в буфере, преобразуем строку в целое sscanf(buf,"%i", &a); return a; }
Как было сказано ранее, объявление массива компонентов не создает компоненты, а только устанавливает факт их существования. Создает и настраивает компоненты RadioButton конструктор формы (функция TForm1::TForm1). Непосредственное создание компонента (элемента массива) выполняет оператор:
RadioButton[i] = new TRadioButton(Forml)