Справочник функций

Ваш аккаунт

Войти через: 
Забыли пароль?
Регистрация
Информацию о новых материалах можно получать и без регистрации:

Почтовая рассылка

Подписчиков: -1
Последний выпуск: 19.06.2015

в тесте есть объект StaticText1. При запуске формы в нем должен отображаться первый вопрос, но в место этого форма просто загружается. Помогите разобраться, найти ошибку в коде не могу?

87K
24 июня 2014 года
Freer
6 / / 24.06.2014
Код:
TTest = record
  Qu:string;
  a:array [0..3] of string;
  ar:byte;
  end;
  Cquestion = class(TObject)
  test: array of TTest;
  Procedure AddTest (_Qu,_a0,_a1,_a2,_a3:string;_ar:byte);
end;
var
  Form2: TForm2;
  Qbase:Cquestion;
  n,r: Byte;
...........................
Procedure Cquestion.AddTest (_Qu,_a0,_a1,_a2,_a3:string;_ar:byte);
var ln:integer;
begin
ln:=Length(test);
SetLength (test, ln+1);
test[ln].Qu:= _Qu;
test[ln].a[0]:= _a0;
test[ln].a[1]:= _a1;
test[ln].a[2]:= _a2;
test[ln].a[3]:= _a3;
test[ln].ar:= _ar;
end;
.............................
procedure TForm2.FormActivate(Sender: TObject);
begin
LName:=('ALog.txt');
assignfile (f, LName);
Rewrite(f);
Qbase.Mix;
n:=0;r:=0;
StaticText2.Caption:=IntToStr(n+1);
StaticText1.Caption:=Qbase.test[n].Qu;
rgRGroup1.Items[0]:=Qbase.test[n].a[0];
rgRGroup1.Items[1]:=Qbase.test[n].a[1];
rgRGroup1.Items[2]:=Qbase.test[n].a[2];
rgRGroup1.Items[3]:=Qbase.test[n].a[3];
rgRGroup1.ItemIndex:=0;
end;
326
24 июня 2014 года
sadovoya
757 / / 19.11.2005
Qbase := Cquestion.Create(self);
в обработчике FormCreate

При закрытии формы:
Qbase.free;

Самодельные объекты надо самому создавать и уничтожать.
87K
25 июня 2014 года
Freer
6 / / 24.06.2014
Добавил нужные строки, но вопросы по прежнему не выводятся.
247
26 июня 2014 года
wanja
1.2K / / 03.02.2003
А ты хоть где-то вызываешь эту самую функцию AddTest?
87K
26 июня 2014 года
Freer
6 / / 24.06.2014
Код:
TTest = record
  Qu:string;
  a:array [0..3] of string;
  ar:byte;
  end;
  Cquestion = class(TObject)
  test: array of TTest;
  Procedure AddTest (_Qu,_a0,_a1,_a2,_a3:string;_ar:byte);
end;
var
  Form2: TForm2;
  Qbase:Cquestion;
  n,r: Byte;
...........................
Procedure Cquestion.AddTest (_Qu,_a0,_a1,_a2,_a3:string;_ar:byte);
var ln:integer;
begin
ln:=Length(test);
SetLength (test, ln+1);
test[ln].Qu:= _Qu;
test[ln].a[0]:= _a0;
test[ln].a[1]:= _a1;
test[ln].a[2]:= _a2;
test[ln].a[3]:= _a3;
test[ln].ar:= _ar;
end;
procedure TForm2.FormCreate(Sender: TObject);
begin
Qbase:=Cquestion.Create;
Qbase.Addtest('Определите значение переменной x после выполнения алгоритма: x:=3; x:=7;x:=x+4;','3','5','7','11',4);
end;
procedure TForm2.FormActivate(Sender: TObject);
begin
LName:=('ALog.txt');
assignfile (f, LName);
Rewrite(f);
Qbase.Mix;
n:=0;r:=0;
Form2.StaticText2.Caption:=IntToStr(n+1);
Form2.StaticText1.Caption:=Qbase.test[n].Qu;
rgRGroup1.Items[0]:=Qbase.test[n].a[0];
rgRGroup1.Items[1]:=Qbase.test[n].a[1];
rgRGroup1.Items[2]:=Qbase.test[n].a[2];
rgRGroup1.Items[3]:=Qbase.test[n].a[3];
rgRGroup1.ItemIndex:=0;
end;
procedure TForm2.FormClose(Sender: TObject; var Action: TCloseAction);
begin
Qbase.Free;
Form1.Show;
end;
87K
29 июня 2014 года
Freer
6 / / 24.06.2014
 
Код:
Qbase.Addtest('Определите значение переменной x после выполнения алгоритма: x:=3;x:=7;x:=x+4;','3','5','7','11',4);
Вот пример вызова функции Addtest
326
29 июня 2014 года
sadovoya
757 / / 19.11.2005
А что делает Qbase.Mix; Код у метода Mix какой? Кстати, если убрать строчку Qbase.Mix, работать будет?
87K
29 июня 2014 года
Freer
6 / / 24.06.2014
Код:
......................
Cquestion = class(TObject)
  test: array of TTest;
  Procedure AddTest (_Qu,_a0,_a1,_a2,_a3:string;_ar:byte);
  procedure Mix;
end;
........................
procedure Cquestion.mix;
var i1,i2,ln:byte;
    i:1..16;
TestTmp:TTest;
begin
ln:=Length(test);
for i:=1 to 16 do
  begin
  i1:=Random(ln);
  i2:=Random(ln);
  TestTmp:=test[i1];
  test[i1]:=test[i2];
  test[i2]:=TestTmp;
  end;
end;
Процедура Cquestion.mix перемешивает базу вопросов, если убрать эту строку то результат тот же:
первая форма запускается нормально,
вторая форма запускается, но вопроса и ответов там нет - только названия форм по умолчанию.
326
29 июня 2014 года
sadovoya
757 / / 19.11.2005
Ну а такое хоть работает:
Form2.StaticText1.Caption:='некий вопрос';

Если и это не работает, то что-то странное. Порядок вызова форм какой? Первая форма главная?

П файле проекта (dpr) есть строчки:
Application.CreateForm(TForm2, Form2);
Application.CreateForm(TForm1, Form1);
87K
29 июня 2014 года
Freer
6 / / 24.06.2014
Отвечаю по порядку:
нет, не работает. в начале появляется первая форма, затем вторая, а потом и третья. да первая форма главная.
Реклама на сайте | Обмен ссылками | Ссылки | Экспорт (RSS) | Контакты
Добавить статью | Добавить исходник | Добавить хостинг-провайдера | Добавить сайт в каталог