в тесте есть объект StaticText1. При запуске формы в нем должен отображаться первый вопрос, но в место этого форма просто загружается. Помогите разобраться, найти ошибку в коде не могу?
Код:
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;
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;
в обработчике FormCreate
При закрытии формы:
Qbase.free;
Самодельные объекты надо самому создавать и уничтожать.
Добавил нужные строки, но вопросы по прежнему не выводятся.
А ты хоть где-то вызываешь эту самую функцию AddTest?
Код:
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;
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;
Код:
Qbase.Addtest('Определите значение переменной x после выполнения алгоритма: x:=3;x:=7;x:=x+4;','3','5','7','11',4);
А что делает Qbase.Mix; Код у метода Mix какой? Кстати, если убрать строчку Qbase.Mix, работать будет?
Код:
......................
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 = 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;
первая форма запускается нормально,
вторая форма запускается, но вопроса и ответов там нет - только названия форм по умолчанию.
Form2.StaticText1.Caption:='некий вопрос';
Если и это не работает, то что-то странное. Порядок вызова форм какой? Первая форма главная?
П файле проекта (dpr) есть строчки:
Application.CreateForm(TForm2, Form2);
Application.CreateForm(TForm1, Form1);
нет, не работает. в начале появляется первая форма, затем вторая, а потом и третья. да первая форма главная.