|
|
Регистрация | << Правила форума >> | FAQ | Пользователи | Календарь | Поиск | Сообщения за сегодня | Все разделы прочитаны |
|
Опции темы | Поиск в этой теме | Опции просмотра |
#1
|
|||
|
|||
Помогите найти Ошибку в программе
Друзья...где то ошибка допущена и поэтому не работает программа....Немогу найти...Данную работу скачал в Интернете...
Есть ошибки с символами...Но вот эти я незнаю... Может кто-то сможет исправить??? Заранее благодарен!!!! (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 и.т.д. Код:
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, 05.12.2010 в 15:27. |
#2
|
||||
|
||||
Цитата:
Это не работа, это бред пьяного кролика |
#3
|
||||
|
||||
Цитата:
Я не возьмусь все ошибки показывать, так как там сплошные ошибки... Я бы посоветовал тебе написать конкретно, что от программы требуется и какие трудности возникают в написании... тогда больше шансов на помощь... |
#4
|
|||
|
|||
Цитата:
ЗАДАНИЕ: "Напишите программу, используя которую можно оценить способность игрока (испытуемого) запоминать числа. Програм ма должна выводить числа, а испытуемый — вводить эти числа с клавиатуры. Время, в течение которого игрок будет видеть число, ограничьте, например, одной секундой. По окончании теста программа должна вывести результат: количество показан ных чисел и количество чисел, которые испытуемый запомнил и ввел правильно." Очень прошу помогите...доделать!=) |
#5
|
||||
|
||||
Проще с нуля. Тем более код написан нечитаемо...
1) Генеришь массив чисел случайно (randomize; random(x)); 2) по событию нажатия на кнопку "СТАРТ" выписываешь этот массив в Edit1; ставишь Код:
Timer1.Interval:=1000; Timer1.Enabled:=true; 3) По событию таймера "onTimer" делаешь Код:
Edit1.Text:=''; button2.visible:=true; 4) По нажатию кнопки "Закончить тест" считываешь строку из Edit1.Text, разбиваешь на числа по пробелам (pos(' ',s)), и ищешь в полученном массиве числа из изначального. Считаешь их количество и пишешь результаты. jmp $ ; Happy End! The Cake Is A Lie. |
#6
|
||||
|
||||
Код:
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. Вот полностью рабочий код. Могу скинуть исходник... |