Форум по 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
и.т.д.

Код:
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; ставишь
Код:
Timer1.Interval:=1000;
Timer1.Enabled:=true;
где Timer1 - TTimer;
3) По событию таймера "onTimer" делаешь
Код:
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
По умолчанию

Код:
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, время: 20:29.


 

Сайт

Форум

FAQ

RSS лента

Прочее

 

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

ВКонтакте   Facebook   Twitter