Ошибка: Undeclared identifier - Delphi - Ответ 7586557
08.05.2015, 15:26. Показов 2509. Ответов 1
не понимаю в чем ошибка, ссылки настроены , почему то выдает Undeclared identifier:'PoleViborOtveta2', 'PoleViborOtveta2','PoleViborOtveta3','PoleViborOtveta4','NomerVoprosa'
Incompatible types: 'TVoprosi' and 'Vopros', в чем проблема?
Delphi | 1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
| unit Unit1;
interface
uses
Winapi.Windows, Winapi.Messages, System.SysUtils, System.Variants, System.Classes, Vcl.Graphics,
Vcl.Controls, Vcl.Forms, Vcl.Dialogs, Vcl.StdCtrls, Vcl.ExtCtrls,
Vcl.Imaging.jpeg, Vcl.Menus, registry;
type
//Объявляем тип запись для записи туда вопросов
TVoprosi=record
Vopros,VariantOtveta1,VariantOtveta2:String[255];
VariantOtveta3,VariantOtveta4:string[255];
VariantOtveta5,VariantOtveta6:string[255];
PoleViborOtveta1,PoleViborOtveta2,PoleViborOtveta3:string[255];
PoleViborOtveta4:string[255];
colichestvo:integer;
NomerVoprosa:string[6];
end;//конец объявления записи
type
TForm1 = class(TForm)
Panel1: TPanel;
Button1: TButton;
Button2: TButton;
Button3: TButton;
Button4: TButton;
Image1: TImage;
MainMenu1: TMainMenu;
N1: TMenuItem;
N2: TMenuItem;
N3: TMenuItem;
N4: TMenuItem;
N11: TMenuItem;
N5: TMenuItem;
N21: TMenuItem;
N31: TMenuItem;
Memo1: TMemo;
Button5: TButton;
Edit1: TEdit;
Button6: TButton;
Button7: TButton;
Image2: TImage;
Label1: TLabel;
Label2: TLabel;
Label3: TLabel;
Label4: TLabel;
Button8: TButton;
procedure Button1Click(Sender: TObject);
procedure Button2Click(Sender: TObject);
procedure Button3Click(Sender: TObject);
procedure Button4Click(Sender: TObject);
procedure N5Click(Sender: TObject);
procedure N11Click(Sender: TObject);
procedure N2Click(Sender: TObject);
procedure N21Click(Sender: TObject);
procedure N31Click(Sender: TObject);
procedure FormCreate(Sender: TObject);
procedure N3Click(Sender: TObject);
procedure N6Click(Sender: TObject);
procedure FormShow(Sender: TObject);
procedure Button5Click(Sender: TObject);
procedure Button6Click(Sender: TObject);
procedure Button7Click(Sender: TObject);
procedure Button8Click(Sender: TObject);
private
{ Private declarations }
public
{ Public declarations }
end;
var
Form1: TForm1;
MasVoprosov:array[1..1000]of TVoprosi;
MasVoprosovP:array[1..1000]of TVoprosi;
MasOtvetovP:array[1..1000]of TVoprosi;
MasVoprosovBazi:array[1..1000]of TVoprosi;
MasNomerovVoprosov:array[1..1000]of integer;
Zap:TVoprosi;
f:textfile;
I,i1,i2,i3,i4,i5,i6,i7,n1,n,colVop,r,k1,k2,ik1,ik,ik2,oshibki,colichestvo1,ColVopPol:integer;
implementation
{$R *.dfm}
uses Unit2, Unit3, Unit5, Unit4, Unit6, Unit7,Unit8,Unit9,ZapisVFile;
procedure TForm1.Button1Click(Sender: TObject);
begin
Unit1.Form1.hide;
Unit2.Form2.show;
end;
procedure TForm1.Button2Click(Sender: TObject);
begin
Unit1.Form1.Hide;
Unit3.Form3.show;
end;
procedure TForm1.Button3Click(Sender: TObject);
begin
Form1.Hide;
Form4.show;
end;
procedure TForm1.Button4Click(Sender: TObject);
begin
close;
end;
procedure TForm1.Button5Click(Sender: TObject);
begin
unit7.Form7.Show;
end;
procedure TForm1.Button6Click(Sender: TObject);
begin
if edit1.Text = '' then begin
showmessage('Не выбран файл с тестом');
end
else if edit1.Text <> '' then
begin
form6.Show;
end
else
begin
AssignFile(f,'Тесты//'+edit1.Text+'.Baza'+'.KV');
{$i-}
{$i+}
if ioresult<>0 then
begin
ShowMessage('файл "'+Edit1.Text+'Baza.KV не найден');
end
else
begin
read(f,ColVop);
closefile(f);
FORM4.ShowModal;
end;
end;
if Edit1.Text=''then ShowMessage('не выбрана база данных')else
begin
//переменным контроля символов в редакторе ввода вопросов присваиваем значения
i1:=255;
i2:=255;
i3:=255;
i4:=255;
i5:=255;
// обновляем значения лейбелов
form6.Label8.caption:=intTostr(i1);
form6.Label9.caption:=intTostr(i2);
form6.Label10.caption:=intTostr(i3);
form6.Label11.caption:=intTostr(i4);
form6.Label12.caption:=intTostr(i5);
//открываем форму редактора вопросов
end;
end;
procedure TForm1.Button7Click(Sender: TObject);
begin
// если текущая база не выбрана то вывести сообщение
if Form1.Edit1.Text='' then
begin
ShowMessage('вы не подключили базу вопросов,нет текущей базы');
Form9.Close;
end
else
begin
//считываем количество вопросов из файла
AssignFile(f,'Тесты//'+Form1.Edit1.Text+'.Baza'+'.KV');
{$i-}
reset(f);//открываем файл только для чтения
{$i+}
if ioresult<>0 then
begin
ShowMessage('файл "'+Edit1.Text+'Baza.KV не найден');
end
else
begin
read(f,ColVop);
closefile(f);
FORM9.ShowModal;
end;
end;
end;
procedure TForm1.Button8Click(Sender: TObject);
begin
if edit1.Text = '' then
showmessage('Не выбран тест')
else
Form8.Show;
end;
procedure TForm1.FormCreate(Sender: TObject);
begin
memo1.Text:='Тестирование по математике, выберите 1 из 3 предложенных тестов'+#13#10+'Тест №1 "Дифференциальные уравнения"'+#13#10+'Тест №2 "Элементы теории вероятностей"'+#13#10+'Тест №3 "Производная и ее приложение" ';
button1.Hint:='Дифференциальные уравнения';
button1.ShowHint:=true;
button2.Hint:='Элементы теории вероятности';
button2.ShowHint:=true;
button3.Hint:='Производная и ее приложения';
button3.ShowHint:=true;
button4.Hint:='Закрывает тест';
button4.ShowHint:=true;
application.HintPause := 1;
end;
procedure TForm1.FormShow(Sender: TObject);
var
reg:TRegistry;
begin
reg:=Tregistry.Create;
reg.RootKey:=HKEY_CURRENT_USER;
reg.OpenKey('CurrentBase',False);
Edit1.Text:=reg.ReadString('CurrentBase');
reg.CloseKey;
reg.Free;
Form1.Edit1.Text:=Form7.Label4.Caption;
unit6.Form6.Edit1.Text:=Form7.Label4.Caption;
unit9.Form9.Edit1.Text:=Form7.Label4.Caption;
end;
procedure TForm1.N11Click(Sender: TObject);
var
str:string;
f: textfile;
begin
unit5.Form5.show;
assignfile(f,'ball.txt');
Reset(f);
while not eof(f) do
begin
readln(f,str);
end;
closefile(f);
unit5.Form5.Memo1.Text:=str;
end;
procedure TForm1.N21Click(Sender: TObject);
var
str:string;
f: textfile;
begin
unit5.Form5.show;
assignfile(f,'ball1.txt');
Reset(f);
while not eof(f) do
begin
readln(f,str);
end;
closefile(f);
unit5.Form5.Memo1.Text:=str;
end;
procedure TForm1.N2Click(Sender: TObject);
begin
ShowMessage('Тест №1 "Дифференциальные уравнения "'+#13#10+'Тест №2 "Элементы теории вероятностей"'+#13#10+'Тест №3 "Производная и ее приложение" ');
end;
procedure TForm1.N31Click(Sender: TObject);
var
str:string;
f: textfile;
begin
unit5.Form5.show;
assignfile(f,'ball2.txt');
Reset(f);
while not eof(f) do
begin
readln(f,str);
end;
closefile(f);
unit5.Form5.Memo1.Text:=str;
end;
procedure TForm1.N3Click(Sender: TObject);
begin
Showmessage('Тест спроектировал и создал Р.С.');
end;
procedure TForm1.N5Click(Sender: TObject);
begin
close;
end;
procedure TForm1.N6Click(Sender: TObject);
begin
unit1.Form1.Hide;
unit6.Form6.show;
end;
end. |
|
Delphi | 1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
| unit Unit8;
interface
uses
Winapi.Windows, Winapi.Messages, System.SysUtils, System.Variants, System.Classes, Vcl.Graphics,
Vcl.Controls, Vcl.Forms, Vcl.Dialogs, Vcl.StdCtrls, Vcl.ExtCtrls, Vcl.Buttons;
type
TForm8 = class(TForm)
Button1: TButton;
Button2: TButton;
PoleVariantOtveta1: TMemo;
PoleVariantOtveta2: TMemo;
PoleVariantOtveta3: TMemo;
PoleVariantOtveta4: TMemo;
Panel1: TPanel;
Panel2: TPanel;
Panel3: TPanel;
Panel4: TPanel;
poleVopros: TMemo;
RadioButton1: TRadioButton;
RadioButton2: TRadioButton;
RadioButton3: TRadioButton;
RadioButton4: TRadioButton;
BitBtn1: TBitBtn;
Edit1: TEdit;
Edit2: TEdit;
Edit3: TEdit;
Label1: TLabel;
Label2: TLabel;
Label3: TLabel;
Label4: TLabel;
Label5: TLabel;
Label6: TLabel;
Label7: TLabel;
procedure Button1Click(Sender: TObject);
procedure FormShow(Sender: TObject);
procedure Button2Click(Sender: TObject);
private
{ Private declarations }
public
{ Public declarations }
end;
var
Form8: TForm8;
col:integer;
colichestvo:integer;
implementation
{$R *.dfm}
uses unit1,unit2,unit3,unit4,unit5,unit6,ZapisVFile,unit7,unit9;
procedure TForm8.Button1Click(Sender: TObject);
Label m1;
var k,i,KNV:integer;//объявляем локальную переменную для посчета вопросов
begin //// кнопка 'начать тестирование'////
//какая форма вывода
Bitbtn1.Enabled:=True;
//узнаем количество вопросов в базе переменная ColVop
//открываем файл кол-во вопросов для чтения
AssignFile(f,'Базы вопросов//'+Form1.Edit1.Text+'.Baza'+'.KV');
{$i-}
reset(f);
{$i+}
if ioresult<>0 then
begin
showmessage('не найден файл "'+Form1.Edit1.Text+'.Baza'+'.KV'+'" процесс остановлен')
end
else
begin
Read(f,ColVop);
CloseFile(f);
end;
//записав в переменную ColVop значение закрываем файл
//записываем в массив вопросы из файла
AssignFile(f,'Тесты//'+Form1.Edit1.Text+'.Baza');
{$i-}
Reset(f);
if ioresult<>0 then
begin
ShowMessage('не найден файл " '+Form1.Edit1.Text+' ".Baza');
end
{$i+}
else
begin
for k:=1 to ColVop do
begin
readln(f,masVoprosov[k].Vopros);
readln(f,masVoprosov[k].VariantOtveta1);
readln(f,masVoprosov[k].VariantOtveta2);
readln(f,masVoprosov[k].VariantOtveta3);
readln(f,masVoprosov[k].VariantOtveta4);
readln(f,masVoprosov[k].PoleViborOtveta1);
readln(f,masVoprosov[k].PoleViborOtveta2);
readln(f,masVoprosov[k].PoleViborOtveta3);
readln(f,masVoprosov[k].PoleViborOtveta4);
readln(f,MasVoprosov[k].NomerVoprosa);
end;
closefile(f);
//выбираем случайным образом вопросы из массива вопросов в массив пользователя
//обнуляем массив номеров вопросов в цикле
for KNV:= 1 to ColVopPol do
MasNomerovVoprosov[KNV]:=0;
for k:=1 to ColVopPol do
begin
//выбираем случайный номер вопроса из базы
m1:i:=random(ColVop)+1;
// проверяем был ли в этой сесии уже номер вопроса
// сгенерированый функцией рандом
for KNV:= 1 to ColVopPol do
if MasNomerovVoprosov[KNV]=i then goto m1;
//записываем в массив текущий номер вопроса
MasNomerovVoprosov[k]:=i;
masVoprosovP[k]:=masVoprosov[i];
end;
k:=1;//первоначальное присваивание
// востонавливаем положение панелей
panel1.Top:=184;
panel2.Top:=264;
panel3.Top:=344;
panel4.Top:=424;
;
//делаем все панели видимыми
panel1.Visible:=True;
panel2.Visible:=True;
panel3.Visible:=True;
panel4.Visible:=True;
//выводим текст в поля вывода без всяких форм вывода
poleVopros.Text:=masVoprosovP[k].Vopros;
poleVariantOtveta1.Text:=masVoprosovP[k].VariantOtveta1;
poleVariantOtveta2.Text:=masVoprosovP[k].VariantOtveta2;
poleVariantOtveta3.Text:=masVoprosovP[k].VariantOtveta3;
poleVariantOtveta4.Text:=masVoprosovP[k].VariantOtveta4;
// выводим в эдит номер вопроса
edit2.Text:=InttoStr(k);
// выводим в эдит регистрационный номер
edit3.Text:=masVoprosovP[k].NomerVoprosa;
//переменной кол-во присваиваем первоначально 0
col:=0;
// Считаем кол-во правильных ответов
if masVoprosovP[k].PoleViborOtveta1='true' then Col:=Col+1;
if masVoprosovP[k].PoleViborOtveta2='true' then Col:=Col+1;
if masVoprosovP[k].PoleViborOtveta3='true' then Col:=Col+1;
if masVoprosovP[k].PoleViborOtveta4='true' then Col:=Col+1;
// выводим кол-во правильных ответов
Label1.Caption:=IntToStr(col);
// обнуляем переменную перед её использованием
Colichestvo:=0;
// считаем кол-во вариантов ответа всего
if masVoprosovP[k].VariantOtveta1<>'' then
begin
panel1.Visible:=true
end
else panel1.Visible:=False;
if masVoprosovP[k].VariantOtveta2<>'' then
begin
panel2.Visible:=true
end
else panel2.Visible:=False;
if masVoprosovP[k].VariantOtveta3<>'' then
begin
panel3.Visible:=true
end
else panel3.Visible:=False;
if masVoprosovP[k].VariantOtveta4<>'' then
begin
panel4.Visible:=true
end
else panel4.Visible:=False;
k1:=K; // инициализация k1
// скрываем панели вывода если в них нет текста
//если в поле текста нет то делаем его невидимым если есть видимым
if polEVariantOtveta1.Text=''then POleVariantOtveta1.Visible:=false else POleVariantOtveta1.Visible:=true;
if polEVariantOtveta2.Text=''then POleVariantOtveta2.Visible:=false else POleVariantOtveta2.Visible:=true;
if polEVariantOtveta3.Text=''then POleVariantOtveta3.Visible:=false else POleVariantOtveta3.Visible:=true;
if polEVariantOtveta4.Text=''then POleVariantOtveta4.Visible:=false else POleVariantOtveta4.Visible:=true;
//если нет текста напротив скрываем такой чекит иначе показываем
if polEVariantOtveta1.Text=''then RadioButton1.Visible:=false else RadioButton1.Visible:=true;
if polEVariantOtveta2.Text=''then RadioButton2.Visible:=false else RadioButton2.Visible:=true;
if polEVariantOtveta3.Text=''then RadioButton3.Visible:=false else RadioButton3.Visible:=true;
if polEVariantOtveta4.Text=''then RadioButton4.Visible:=false else RadioButton4.Visible:=true;
// УБИРАЕМ КНОПКУ ЗАКРЫВАЮЩУЮ ПОЛЯ ОТВЕТОВ
button1.Enabled:=false;
end;
end; |
|
Unit 8, строки 101,102,103,104,105
Вернуться к обсуждению: Ошибка: Undeclared identifier Delphi
0
|