Форум по Delphi программированию

Delphi Sources



Вернуться   Форум по Delphi программированию > Все о Delphi > Разное
Ник
Пароль
Регистрация <<         Правила форума         >> FAQ Пользователи Календарь Поиск Сообщения за сегодня Все разделы прочитаны

Ответ
 
Опции темы Поиск в этой теме Опции просмотра
  #1  
Старый 05.12.2010, 15:24
reebox reebox вне форума
Прохожий
 
Регистрация: 05.12.2010
Сообщения: 2
Репутация: 10
Подмигивание Помогите найти Ошибку в программе

Друзья...где то ошибка допущена и поэтому не работает программа....Немогу найти...Данную работу скачал в Интернете...
Есть ошибки с символами...Но вот эти я незнаю...
Может кто-то сможет исправить??? Заранее благодарен!!!!

(69): Statement expected, but expression of type 'Integer' found
(103): Undeclared identifier: 'Edit1KeyPress'
(103): ';' expected but '(' found
(103): ';' expected but ')' found
(108): Missing operator or semicolon
и.т.д.

Код:
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
interface
 
uses
  Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
  Dialogs, StdCtrls, ExtCtrls;
 
type
  TForm1 = class(TForm)
    Edit1: TEdit;
    Label1: TLabel;
    Button1: TButton;
    Timer1: TTimer;
    procedure FormCreate(Sender: TObject);
    procedure Button1Click(Sender: TObject);
    procedure Timer1Timer(Sender: TObject);
  private
    { Private declarations }
  public
    { Public declarations }
  end;
 
var
  Form1: TForm1;
 
 
 implementation
const
KC = 5; // разрядность числа (кол-во цифр)
LT = 10; // количество чисел (длина теста)
var
numb: integer; // число, которое должен запомнить испытуемый
right: integer; // количество правильных чисел
n: integer; // счетчик чисел
{$R *.dfm}
// генерирует к - разрядное число
function GetNumb(k: integer) : integer;
var
n: integer; // генерируемое число
i: integer;
begin
// процедура генерирует число по разрядам
// начиная со старшего
n:= Random(9)+1; // старший разряд не может быть нулем
// остальные разряды
for i := 1 to (k-1) do
n := n*10 + Random(10);
GetNumb := n;
end;
// создание формы
procedure TForm1.FormCreate (Sender: TObject);
begin
Edit1.Visible := False; // скрыть поле ввода Editl
Edit1.MaxLength := KC; // кол-во символов, которое
// можно ввести
Label1.Wordwrap := True; // разрешить перенос слов на
// следующую строку
Label1.Caption :=
'Сейчас на экране будут появляться числа. ' +
'Вы должны запомнить число, набрать его на клавиатуре '+
'и нажать <Enter>';
Button1.Caption := 'Начать';
Timer1.Enabled := False; // таймер остановлен
Timer1.Interval := 1000; // время показа числа - 1 секунда
right := 0; // кол-во правильных
n := 0; // счетчик чисел
Randomize; 0// инициализация ГСЧ
end;
 
// щелчок на кнопке "Начать/Завершить"
procedure TForm1.Button1Click(Sender: TObject);
begin
if Button1.Caption = 'Завершить' then
Form1.Close; // закрыть окно программы
 
if Button1.Caption = 'Начать' then
begin
Button1.Caption := 'Завершить';
Button1.Visible := False; // скрыть кнопку
// кнопка Buttonl станет доступной после того,
// как испытание закончится
Label1.Caption := '';
Label1. Font .Size := 24; //размер шрифта поля Labell
Edit1.Font.Size := 24; // размер шрифта поля Editl
// сгенерировать и вывести число
numb := GetNumb(KC);
Label1.Caption := IntToStr(numb);
Timer1.Enabled := True; // запуск таймера
// процедура обработки сигнала от таймера
// "сотрет" число
end;
end;
// обработка события таймера
procedure TForm1.Timer1Timer(Sender: TObject);
begin
Timer1.Enabled := False; // остановить таймер
Label1.Visible := False; // скрыть число
Edit1.Visible := True; // сделать доступным поле Editl
Edit1.SetFocus; // установить курсор в поле Editl
end;
// нажатие клавиш в поле Editl
procedure TForm1.Edit1KeyPress(Sender: TObject; var Key: Char);
var
igrok: integer; // число, которое ввел испытуемый
begin
case Key of
10'..'9',#8: ; // клавиши "0"-"9", клавиша <Backspace>
#13: // клавиша <Enter>
begin
igrok := StrToInt(Editl.Text) ;
if (igrok = numb)
then right := right + 1;
n := n + 1; // счетчик чисел
Edit1.Text := '';
Edit1.Visible := False; // скрыть поле Editl
if n < LT then
begin
numb := GetNumb(KC); // сгенерировать следующее
// число
Label1.Caption : = IntToStr(numb); // отобразить
// число
end
Labell.Visible := True;
Timerl.Enabled := True; // пуск таймера
else begin
// испытание закончено
// вывести результат
Labell.Font.Size := 10;
Labell.Caption := 'Результат:1 + #13 +
'Показано чисел: ' + IntToStr(LT) + #13 +
'Правильных: ' + IntToStr(right);
Labell.Visible := True;
Buttonl.Visible := True; // показать кнопку Завершить
end;
end;
else Key := Chr(0);
end;
end;
procedure TForm1.FormCreate(Sender: TObject);
begin
procedure TForm1.FormCreate (Sender: TObject);
begin
Editl.Visible := False; // скрыть поле ввода Editl
Editl.MaxLength := КС; // кол-во символов, которое
// можно ввести
Labell.Wordwrap : = True; // разрешить перенос слов на
// следующую строку
Labell.Caption :=
'Сейчас на экране будут появляться числа. ' +
'Вы должны запомнить число, набрать его на клавиатуре '+
'и нажать <Enter>'; .
Buttonl.Caption := 'Начать';
Timerl.Enabled := False; // таймер остановлен
Timerl.Interval := 1000; // время показа числа - 1 секунда
right := 0; // кол-во правильных
п := 0; // счетчик чисел
Randomize; o// инициализация ГСЧ
end;
end;
 
procedure TForm1.FormCreate(Sender: TObject);
begin
var
n: integer; // генерируемое число
i: integer;
begin
// процедура генерирует число по разрядам
// начиная со старшего
n:= Random(9)+1; // старший разряд не может быть нулем
// остальные разряды
for i := 1 to (k-1) do
n := n*10 + Random(10);
GetNumb := n;
end;
// создание формы
procedure TForm1.FormCreate (Sender: TObject);
begin
Edit1.Visible := False; // скрыть поле ввода Editl
Edit1.MaxLength := KC; // кол-во символов, которое
// можно ввести
Label1.Wordwrap := True; // разрешить перенос слов на
// следующую строку
Label1.Caption :=
'Сейчас на экране будут появляться числа. ' +
'Вы должны запомнить число, набрать его на клавиатуре '+
'и нажать <Enter>';
Button1.Caption := 'Начать';
Timer1.Enabled := False; // таймер остановлен
Timer1.Interval := 1000; // время показа числа - 1 секунда
right := 0; // кол-во правильных
n := 0; // счетчик чисел
Randomize; 0// инициализация ГСЧ
end;
end;
 
procedure TForm1.Button1Click(Sender: TObject);
begin
procedure TForm1.Button1Click(Sender: TObject);
begin
if Buttonl.Caption = 'Завершить' then
Forml.Close; // закрыть окно программы
*
if Buttonl.Caption = 'Начать' then
begin
Buttonl.Caption := 'Завершить';
Buttonl.Visible := False; // скрыть кнопку
// кнопка Buttonl станет доступной после того,
// как испытание закончится
Labell.Caption : = '';
Labell. Font .Size := 24; //размер шрифта поля Labell
Editl.Font.Size : = 24; // размер шрифта поля Editl
// сгенерировать и вывести число
numb := GetNumb(KC);
Labell.Caption := IntToStr(numb);
Timerl.Enabled := True; // запуск таймера
// процедура обработки сигнала от таймера
// "сотрет" число
end;
end;
 
end.
 
 
procedure TForm1.Timer1Timer(Sender: TObject);
begin
procedure TForm1.Timer1Timer(Sender: TObject);
begin
Timerl.Enabled := False; // остановить таймер
Labell.Visible := False; // скрыть число
Editl.Visible := True; // сделать доступным поле Editl
Editl.SetFocus; // установить курсор в поле Editl
end;
end;
 
end.
Admin: Пользуемся тегами!

Последний раз редактировалось Admin, 05.12.2010 в 15:27.
Ответить с цитированием
  #2  
Старый 05.12.2010, 16:24
Аватар для deltas
deltas deltas вне форума
Новичок
 
Регистрация: 22.11.2010
Сообщения: 99
Репутация: 47
По умолчанию

Цитата:
Данную работу скачал в Интернете...

Это не работа, это бред пьяного кролика
Ответить с цитированием
  #3  
Старый 05.12.2010, 16:31
Аватар для deltas
deltas deltas вне форума
Новичок
 
Регистрация: 22.11.2010
Сообщения: 99
Репутация: 47
По умолчанию

Цитата:
(69): Statement expected, but expression of type 'Integer' found
После Randomize; ноль убери... и т.д
Я не возьмусь все ошибки показывать, так как там сплошные ошибки...
Я бы посоветовал тебе написать конкретно, что от программы требуется и какие трудности возникают в написании... тогда больше шансов на помощь...
Ответить с цитированием
  #4  
Старый 05.12.2010, 16:43
reebox reebox вне форума
Прохожий
 
Регистрация: 05.12.2010
Сообщения: 2
Репутация: 10
По умолчанию

Цитата:
Сообщение от deltas
После Randomize; ноль убери... и т.д
Я не возьмусь все ошибки показывать, так как там сплошные ошибки...
Я бы посоветовал тебе написать конкретно, что от программы требуется и какие трудности возникают в написании... тогда больше шансов на помощь...


ЗАДАНИЕ: "Напишите программу, используя которую можно оценить способность игрока (испытуемого) запоминать числа. Програм ма должна выводить числа, а испытуемый — вводить эти числа с клавиатуры. Время, в течение которого игрок будет видеть число, ограничьте, например, одной секундой. По окончании теста программа должна вывести результат: количество показан ных чисел и количество чисел, которые испытуемый запомнил и ввел правильно."

Очень прошу помогите...доделать!=)
Ответить с цитированием
  #5  
Старый 05.12.2010, 17:43
Аватар для Bargest
Bargest Bargest вне форума
Профессионал
 
Регистрация: 19.10.2010
Адрес: Москва
Сообщения: 2,390
Версия Delphi: XE3/VS12/FASM
Репутация: 14665
По умолчанию

Проще с нуля. Тем более код написан нечитаемо...

1) Генеришь массив чисел случайно (randomize; random(x));
2) по событию нажатия на кнопку "СТАРТ" выписываешь этот массив в Edit1; ставишь
Код:
1
2
Timer1.Interval:=1000;
Timer1.Enabled:=true;
где Timer1 - TTimer;
3) По событию таймера "onTimer" делаешь
Код:
1
2
Edit1.Text:='';
button2.visible:=true;
где button2 - невидимая изначально кнопка "Закончить тест"
4) По нажатию кнопки "Закончить тест" считываешь строку из Edit1.Text, разбиваешь на числа по пробелам (pos(' ',s)), и ищешь в полученном массиве числа из изначального. Считаешь их количество и пишешь результаты.
__________________
jmp $ ; Happy End!
The Cake Is A Lie.
Ответить с цитированием
  #6  
Старый 05.12.2010, 17:57
Аватар для deltas
deltas deltas вне форума
Новичок
 
Регистрация: 22.11.2010
Сообщения: 99
Репутация: 47
По умолчанию

Код:
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
unit Unit1;
 
interface
 
uses
  Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
  Dialogs, ExtCtrls, StdCtrls;
 
type
  TForm1 = class(TForm)
    Edit1: TEdit;
    Label1: TLabel;
    Button1: TButton;
    Timer1: TTimer;
    procedure FormCreate(Sender: TObject);
    procedure Button1Click(Sender: TObject);
    procedure Timer1Timer(Sender: TObject);
    procedure Edit1KeyPress(Sender: TObject; var Key: Char);
  private
    { Private declarations }
  public
    { Public declarations }
  end;
 
var
  Form1: TForm1;
 
implementation
const
KC = 5; // разрядность числа (кол-во цифр)
LT = 10; // количество чисел (длина теста)
var
numb: integer; // число, которое должен запомнить испытуемый
right: integer; // количество правильных чисел
n: integer; // счетчик чисел
 
{$R *.dfm}
 
function GetNumb(k: integer) : integer;
var
n: integer; // генерируемое число
i: integer;
begin
// процедура генерирует число по разрядам
// начиная со старшего
n:= Random(9)+1; // старший разряд не может быть нулем
// остальные разряды
for i := 1 to (k-1) do
n := n*10 + Random(10);
GetNumb := n;
end;
 
 
 
 
 
procedure TForm1.FormCreate(Sender: TObject);
begin
Edit1.Visible := False; // скрыть поле ввода Editl
Edit1.MaxLength := KC; // кол-во символов, которое
// можно ввести
Label1.Wordwrap := True; // разрешить перенос слов на
// следующую строку
Label1.Caption :=
'Сейчас на экране будут появляться числа. ' +
'Вы должны запомнить число, набрать его на клавиатуре '+
'и нажать <Enter>';
Button1.Caption := 'Начать';
Timer1.Enabled := False; // таймер остановлен
Timer1.Interval := 1000; // время показа числа - 1 секунда
right := 0; // кол-во правильных
n := 0; // счетчик чисел
Randomize; // инициализация ГСЧ
end;
 
procedure TForm1.Button1Click(Sender: TObject);
begin
if Button1.Caption = 'Завершить' then
Form1.Close; // закрыть окно программы
 
if Button1.Caption = 'Начать' then
begin
Button1.Caption := 'Завершить';
Button1.Visible := False; // скрыть кнопку
// кнопка Buttonl станет доступной после того,
// как испытание закончится
Label1.Caption := '';
Label1. Font .Size := 24; //размер шрифта поля Labell
Edit1.Font.Size := 24; // размер шрифта поля Editl
// сгенерировать и вывести число
numb := GetNumb(KC);
Label1.Caption := IntToStr(numb);
Timer1.Enabled := True; // запуск таймера
// процедура обработки сигнала от таймера
// "сотрет" число
end;
end;
 
procedure TForm1.Timer1Timer(Sender: TObject);
begin
Timer1.Enabled := False; // остановить таймер
Label1.Visible := False; // скрыть число
Edit1.Visible := True; // сделать доступным поле Editl
Edit1.SetFocus; // установить курсор в поле Editl
end;
 
procedure TForm1.Edit1KeyPress(Sender: TObject; var Key: Char);
var
igrok: integer; // число, которое ввел испытуемый
begin
case Key of
#13:
begin
igrok := StrToInt(Edit1.Text) ;
if (igrok = numb)
then right := right + 1;
n := n + 1; // счетчик чисел
Edit1.Text := '';
Edit1.Visible := False; // скрыть поле Editl
if n < LT then
begin
numb := GetNumb(KC); // сгенерировать следующее
// число
Label1.Caption := IntToStr(numb); // отобразить
// число
 
Label1.Visible := True;
Timer1.Enabled := True// пуск таймера
 end
else begin
// испытание закончено
// вывести результат
Label1.Font.Size := 10;
Label1.Caption := 'Результат:1' + #13 + 'Показано чисел: ' + IntToStr(LT) + #13 +
'Правильных: ' + IntToStr(right);
Label1.Visible := True;
Button1.Visible := True; // показать кнопку Завершить
end;
end;
else Key := Key;
end;
end;
 
end.

Вот полностью рабочий код. Могу скинуть исходник...
Ответить с цитированием
Ответ


Delphi Sources

Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск
Опции просмотра

Ваши права в разделе
Вы не можете создавать темы
Вы не можете отвечать на сообщения
Вы не можете прикреплять файлы
Вы не можете редактировать сообщения

BB-коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.
Быстрый переход


Часовой пояс GMT +3, время: 00:17.


 

Сайт

Форум

FAQ

Соглашения

Прочее

 

Copyright © Форум "Delphi Sources" by BrokenByte Software, 2004-2025