Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > IT форум > Помощь студентам
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 09.12.2009, 19:19   #1
Денис56
 
Регистрация: 14.11.2009
Сообщений: 4
По умолчанию Игра быки и коровы

Всем доброго времени суток.
Помогите, пожалуйста, решить задачу, обычная игра быки и коровы (delphi)
Нашел алгоритм своей задачи на паскале, решил переделать ее в делфи.
Подскажите, как правильно сделать обращение на ввод быков и коров в
Edit2.Text, а не через InputQuery?

Код Delphi
const MaxSgn = 6; {Максимальное значение в числе}
Sgn = 4; {Количество цифр в числе}
type
S = 1..MaxSgn;
Numb = array[1..Sgn] of S;
type
Step = Record {Информация об одном вопросе - ответе}
n : Numb; {Спрошенное число}
answer : integer; {Ответ}
end;
Game = array[1..32] of step;
{Информация о всех вопросах - ответах}
type
TForm1 = class(TForm)
MainMenu1: TMainMenu;
N1: TMenuItem;
N2: TMenuItem;
N3: TMenuItem;
N4: TMenuItem;
N5: TMenuItem;
N7: TMenuItem;
N6: TMenuItem;
ImageList1: TImageList;
Edit1: TEdit;
Label1: TLabel;
Label2: TLabel;
Memo1: TMemo;

procedure N6Click(Sender: TObject);
procedure N3Click(Sender: TObject);
procedure N4Click(Sender: TObject);
procedure N5Click(Sender: TObject);
procedure FormCreate(Sender: TObject);

private
{ Private declarations }
public
{ Public declarations }
end;

var
Form1: TForm1;

implementation

uses About_unit, F_help;

{$R *.dfm}

procedure TForm1.N6Click(Sender: TObject);
begin
Close;
end;

procedure TForm1.N3Click(Sender: TObject);
begin
AboutForm.ShowModal;
end;

procedure TForm1.N4Click(Sender: TObject);
begin
Help_Form.ShowModal;
end;

function cows(n1,n2:Numb):integer;
{Сравнивает два числа и возвращает результат
сравнения в виде <количество быков>*10+<количество коров>}
var i1,i2 : 1..Sgn;
a : integer;
begin
{Необходимо сравнивать все цифры первого
числа со всеми цифрами второго}
a:=0;
for i1:=1 to Sgn do
for i2:=1 to Sgn do
if n1[i1]=n2[i2] then
if i1=i2 then a:=a+10 {Встретился 'Бык'}
else inc(a);
cows:=a;
end;

Function DiffParamToStr(Code, BiK: Numb):string;
var s: string;
i: byte;
begin
s:='';
for i:=1 to 4 do
s:=s+inttostr(Code[i]);
s:=s+' ';
if BiK[1]>=0 then s:=s+inttostr(Bik[1])+'б. ';
if BiK[2]>=0 then s:=s+inttostr(Bik[2])+'к. ';
while length(s)<20 do
s:=s+' ';
DiffParamToStr:=s;
end;

procedure FTK; {пересчет }
var Nstep : integer; {Номер текущего шага}
Info : Game; CaptionStr:String;
Curnumb,vec : Numb; i,j : integer; b : boolean;
BEGIN
Nstep:=0;
for i:=1 to Sgn do Curnumb[i]:=i;
Form1.Label2.caption:='';
while true do
{Пока не будут перебраны все числа
или не найденно решение}
begin
{Спросить текущее число}
Form1.Edit1.Text:='';
for i:=1 to Sgn do Form1.Edit1.Text:=Form1.Edit1.Text+ IntToStr(Curnumb[i]);
CaptionStr:='';
{Пользователь должен ввести число, первая цифра
которого 'Быки', вторая - 'Коровы'}
if (not InputQuery('Ввод числа', 'первая цифра Быки, вторая - Коровы',CaptionStr))
or (Length(CaptionStr)<>2)or (Length(CaptionStr)div 10 + Length(CaptionStr)mod 10>Sgn)then
BEGIN
Form1.Label2.caption:='Вы неправильно отвечали !';
exit;
end;
vec[1]:=strtoint(CaptionStr)div 10; //быки
vec[2]:=strtoint(CaptionStr)mod 10; //коровы
form1.memo1.text:=form1.memo1.text+ DiffParamToStr(Curnumb,vec);
Form1.Edit1.Text:='';
inc(Nstep);
Info[Nstep].n:=Curnumb;
Info[Nstep].Answer:=StrToint(CaptionStr);
{'Быков' и 'Коров' вместе не может быть больше, чем цифр}
if Info[Nstep].Answer=10*Sgn then exit;
{Далее идет генерация нового числа}
repeat
i:=Sgn;
{Увеличение числа на 1-цу}
while (i>=1) and (Curnumb[i]=MaxSgn) do
begin
Curnumb[i]:=1;
dec(i);
end;
if i<1 then
begin {Все числа перебраны, а ответ не найден}
Form1.Label2.caption:='Вы неправильно отвечали !';
exit;
end;
inc(Curnumb[i]);
b:=true;
{Проверка на встречающиеся одинаковые цифры}
for i:=1 to Sgn do
for j:=i+1 to Sgn do
b:=b and (Curnumb[i]<>Curnumb[j]);
for i:=1 to Nstep
do b:=b and (cows(Curnumb,Info[i].n)=Info[i].Answer);
until b;
end; {while}
end;

procedure TForm1.N5Click(Sender: TObject);
begin
Form1.Edit1.Text:='';
memo1.Text:='';
FTK;
end;

procedure TForm1.FormCreate(Sender: TObject);
begin
memo1.Text:='';
end;

end.
Денис56 вне форума Ответить с цитированием
Старый 09.12.2009, 19:52   #2
Alex_FF
Удален
Форумчанин
 
Регистрация: 02.12.2009
Сообщений: 309
По умолчанию

Компонент Edit может содержать только строку. Поэтому объявляешь переменную типа String. Пусть эта переменная называется S, а твой Edit - Edit1. Тогда, чтобы записать в S значение из Edit'а нужно написать:
Код:
S := Edit1.Text;
Если нужны числа, то преобразовывай в число
Код:
uses
  SysUtils;  { для StrToInt }
......
var
  N: Integer;
......
  N := StrToInt(S);
......
end.
Alex_FF вне форума Ответить с цитированием
Старый 12.12.2009, 09:56   #3
Денис56
 
Регистрация: 14.11.2009
Сообщений: 4
По умолчанию

Это мне понятно, а как в маем цикле сделать, чтоб он ждал, когда пользователь введет данные, сколько быков и коров и только после этого делал присвоение значения переменой?
Денис56 вне форума Ответить с цитированием
Старый 14.12.2009, 17:48   #4
Alex_FF
Удален
Форумчанин
 
Регистрация: 02.12.2009
Сообщений: 309
По умолчанию

Очень просто: создаешь Edit, выделяешь его и идешь в Object Inspector. Там открываешь вкладку Events, находишь поле OnExit жмешь два раза на белом поле, где мигает |
у тебя откроется окно с кодом, который выполнится после того, как пользователь выйдет из твоего Edit'а:
Код:
procedure TForm1.Edit1Exit(Sender: TObject);
begin
  // сюда пиши свой код
end;
Alex_FF вне форума Ответить с цитированием
Старый 19.12.2009, 21:45   #5
Денис56
 
Регистрация: 14.11.2009
Сообщений: 4
По умолчанию

Я долго думал и экспериментировал, но у меня не получилось это все связать с моим кодом.

Код:
const MaxSgn = 6; {Максимальное значение в числе}
Sgn = 4; {Количество цифр в числе}
type
    S = 1..MaxSgn;
    Numb = array[1..Sgn] of S;
type
Step = Record {Информация об одном вопросе - ответе}
n : Numb; {Спрошенное число}
answer : integer; {Ответ}
q:String;
end;
Game = array[1..32] of step;
{Информация о всех вопросах - ответах}
type
  TForm1 = class(TForm)
    MainMenu1: TMainMenu;
    N1: TMenuItem;
    N2: TMenuItem;
    N3: TMenuItem;
    N4: TMenuItem;
    N5: TMenuItem;
    N7: TMenuItem;
    N6: TMenuItem;
    ImageList1: TImageList;
    Edit1: TEdit;
    Label1: TLabel;
    Label2: TLabel;
    Memo1: TMemo;
    Image1: TImage;
    Label3: TLabel;
    Edit2: TEdit;

    procedure N6Click(Sender: TObject);
    procedure N3Click(Sender: TObject);
    procedure N4Click(Sender: TObject);
    procedure N5Click(Sender: TObject);
    procedure FormCreate(Sender: TObject);
    procedure Edit2KeyPress(Sender: TObject; var Key: Char);
    procedure Edit2Exit(Sender: TObject);
  
  private
    { Private declarations }
  public
    { Public declarations }
  end;

var
  Form1: TForm1;

implementation

uses About_unit, F_help;

{$R *.dfm}

procedure TForm1.N6Click(Sender: TObject);
begin
  Close;
end;

procedure TForm1.N3Click(Sender: TObject);
begin
  AboutForm.ShowModal;
end;

procedure TForm1.N4Click(Sender: TObject);
begin
   Help_Form.ShowModal;
end;

function cows(n1,n2:Numb):integer;
{Сравнивает два числа и возвращает результат
сравнения в виде <количество быков>*10+<количество коров>}
var i1,i2 : 1..Sgn;
a : integer;
begin
{Необходимо сравнивать все цифры первого
числа со всеми цифрами второго}
a:=0;
for i1:=1 to Sgn do
for i2:=1 to Sgn do
if n1[i1]=n2[i2] then
if i1=i2 then a:=a+10 {Встретился 'Бык'}
else inc(a);
cows:=a;
end;

Function DiffParamToStr(Code, BiK: Numb):string;
var s: string;
    i: byte;
begin
s:='';
for i:=1 to 4 do
s:=s+inttostr(Code[i]);
s:=s+'   ';
if BiK[1]>=0 then s:=s+inttostr(Bik[1])+'б. ';
if BiK[2]>=0 then s:=s+inttostr(Bik[2])+'к. ';
while length(s)<20 do
s:=s+' ';
DiffParamToStr:=s;
end;

procedure FTK; {пересчет }
var Nstep : integer; {Номер текущего шага}
Info : Game; CaptionStr:String;
Curnumb,vec : Numb; i,j : integer; b : boolean;
BEGIN
Nstep:=0;
for i:=1 to Sgn do Curnumb[i]:=i;
Form1.Label2.caption:='';
while true do
{Пока не будут перебраны все числа
или не найденно решение}
begin
{Спросить текущее число}
Form1.Edit1.Text:='';
for i:=1 to Sgn do Form1.Edit1.Text:=Form1.Edit1.Text+IntToStr(Curnumb[i]);
CaptionStr:='';
 Form1.Edit2.SetFocus;
 CaptionStr:=Form1.Edit2.Text;
 //Здесь у меня ошибка, так как происходит присвоение переменной
 до ввода пользователем заданных значений.
vec[1]:=strtoint(CaptionStr)div 10; //быки
vec[2]:=strtoint(CaptionStr)mod 10; //коровы
form1.memo1.text:=form1.memo1.text+DiffParamToStr(Curnumb,vec);
inc(Nstep);
Info[Nstep].n:=Curnumb;
Info[Nstep].Answer:=StrToint(CaptionStr);
{Пользователь должен ввести число, первая цифра
которого 'Быки', вторая - 'Коровы'}
{'Быков' и 'Коров' вместе не может быть больше, чем цифр}
if Info[Nstep].Answer=10*Sgn then exit;
{Далее идет генерация нового числа}
repeat
i:=Sgn;
{Увеличение числа на 1-цу}
while (i>=1) and (Curnumb[i]=MaxSgn) do
begin
Curnumb[i]:=1;
dec(i);
end;
if i<1 then
begin {Все числа перебраны, а ответ не найден}
Form1.Label2.caption:='Вы неправильно отвечали !';
exit;
end;
inc(Curnumb[i]);
b:=true;
{Проверка на встречающиеся одинаковые цифры}
for i:=1 to Sgn do
for j:=i+1 to Sgn do
b:=b and (Curnumb[i]<>Curnumb[j]);
for i:=1 to Nstep
   do b:=b and (cows(Curnumb,Info[i].n)=Info[i].Answer);
until b;
end; {while}
end;

procedure TForm1.N5Click(Sender: TObject);
begin
Form1.Edit1.Text:='';
Form1.Label3.caption:='Загаданное число:';
FTK;
end;

procedure TForm1.FormCreate(Sender: TObject);
begin
form1.memo1.text:='';
end;

procedure TForm1.Edit2KeyPress(Sender: TObject; var Key: Char);
begin
 if (Length(Edit2.Text)=2) and (key <> #8) then
 Begin
 if (key=chr(13)) and (Length(Edit2.Text)<>0) Then exit;
 Key:=Chr(0);
 end;
 case Key of
'0'..'4',Chr(8) : ;
 else Key:=Chr(0); {запрещенные символы не отображать}
end;
end;

procedure TForm1.Edit2Exit(Sender: TObject);
var q:String;
begin
q:=Form1.Edit2.Text;
end;

end.

Последний раз редактировалось Денис56; 19.12.2009 в 21:55.
Денис56 вне форума Ответить с цитированием
Старый 21.12.2009, 01:03   #6
Alex_FF
Удален
Форумчанин
 
Регистрация: 02.12.2009
Сообщений: 309
По умолчанию

Цитата:
Сообщение от Денис56 Посмотреть сообщение
Я долго думал и экспериментировал, но у меня не получилось это все связать с моим кодом.

Код:
const MaxSgn = 6; {Максимальное значение в числе}
Sgn = 4; {Количество цифр в числе}
type
    S = 1..MaxSgn;
    Numb = array[1..Sgn] of S;
type
Step = Record {Информация об одном вопросе - ответе}
n : Numb; {Спрошенное число}
answer : integer; {Ответ}
q:String;
end;
Game = array[1..32] of step;
{Информация о всех вопросах - ответах}
type
  TForm1 = class(TForm)
    MainMenu1: TMainMenu;
    N1: TMenuItem;
    N2: TMenuItem;
    N3: TMenuItem;
    N4: TMenuItem;
    N5: TMenuItem;
    N7: TMenuItem;
    N6: TMenuItem;
    ImageList1: TImageList;
    Edit1: TEdit;
    Label1: TLabel;
    Label2: TLabel;
    Memo1: TMemo;
    Image1: TImage;
    Label3: TLabel;
    Edit2: TEdit;

    procedure N6Click(Sender: TObject);
    procedure N3Click(Sender: TObject);
    procedure N4Click(Sender: TObject);
    procedure N5Click(Sender: TObject);
    procedure FormCreate(Sender: TObject);
    procedure Edit2KeyPress(Sender: TObject; var Key: Char);
    procedure Edit2Exit(Sender: TObject);
  
  private
    { Private declarations }
  public
    { Public declarations }
  end;

var
  Form1: TForm1;

implementation

uses About_unit, F_help;

{$R *.dfm}

procedure TForm1.N6Click(Sender: TObject);
begin
  Close;
end;

procedure TForm1.N3Click(Sender: TObject);
begin
  AboutForm.ShowModal;
end;

procedure TForm1.N4Click(Sender: TObject);
begin
   Help_Form.ShowModal;
end;

function cows(n1,n2:Numb):integer;
{Сравнивает два числа и возвращает результат
сравнения в виде <количество быков>*10+<количество коров>}
var i1,i2 : 1..Sgn;
a : integer;
begin
{Необходимо сравнивать все цифры первого
числа со всеми цифрами второго}
a:=0;
for i1:=1 to Sgn do
for i2:=1 to Sgn do
if n1[i1]=n2[i2] then
if i1=i2 then a:=a+10 {Встретился 'Бык'}
else inc(a);
cows:=a;
end;

Function DiffParamToStr(Code, BiK: Numb):string;
var s: string;
    i: byte;
begin
s:='';
for i:=1 to 4 do
s:=s+inttostr(Code[i]);
s:=s+'   ';
if BiK[1]>=0 then s:=s+inttostr(Bik[1])+'б. ';
if BiK[2]>=0 then s:=s+inttostr(Bik[2])+'к. ';
while length(s)<20 do
s:=s+' ';
DiffParamToStr:=s;
end;

procedure FTK; {пересчет }
var Nstep : integer; {Номер текущего шага}
Info : Game; CaptionStr:String;
Curnumb,vec : Numb; i,j : integer; b : boolean;
BEGIN
Nstep:=0;
for i:=1 to Sgn do Curnumb[i]:=i;
Form1.Label2.caption:='';
while true do
{Пока не будут перебраны все числа
или не найденно решение}
begin
{Спросить текущее число}
Form1.Edit1.Text:='';
for i:=1 to Sgn do Form1.Edit1.Text:=Form1.Edit1.Text+IntToStr(Curnumb[i]);
CaptionStr:='';
 Form1.Edit2.SetFocus;
 CaptionStr:=Form1.Edit2.Text;
 //Здесь у меня ошибка, так как происходит присвоение переменной
 до ввода пользователем заданных значений.
vec[1]:=strtoint(CaptionStr)div 10; //быки
vec[2]:=strtoint(CaptionStr)mod 10; //коровы
form1.memo1.text:=form1.memo1.text+DiffParamToStr(Curnumb,vec);
inc(Nstep);
Info[Nstep].n:=Curnumb;
Info[Nstep].Answer:=StrToint(CaptionStr);
{Пользователь должен ввести число, первая цифра
которого 'Быки', вторая - 'Коровы'}
{'Быков' и 'Коров' вместе не может быть больше, чем цифр}
if Info[Nstep].Answer=10*Sgn then exit;
{Далее идет генерация нового числа}
repeat
i:=Sgn;
{Увеличение числа на 1-цу}
while (i>=1) and (Curnumb[i]=MaxSgn) do
begin
Curnumb[i]:=1;
dec(i);
end;
if i<1 then
begin {Все числа перебраны, а ответ не найден}
Form1.Label2.caption:='Вы неправильно отвечали !';
exit;
end;
inc(Curnumb[i]);
b:=true;
{Проверка на встречающиеся одинаковые цифры}
for i:=1 to Sgn do
for j:=i+1 to Sgn do
b:=b and (Curnumb[i]<>Curnumb[j]);
for i:=1 to Nstep
   do b:=b and (cows(Curnumb,Info[i].n)=Info[i].Answer);
until b;
end; {while}
end;

procedure TForm1.N5Click(Sender: TObject);
begin
Form1.Edit1.Text:='';
Form1.Label3.caption:='Загаданное число:';
FTK;
end;

procedure TForm1.FormCreate(Sender: TObject);
begin
form1.memo1.text:='';
end;

procedure TForm1.Edit2KeyPress(Sender: TObject; var Key: Char);
begin
 if (Length(Edit2.Text)=2) and (key <> #8) then
 Begin
 if (key=chr(13)) and (Length(Edit2.Text)<>0) Then exit;
 Key:=Chr(0);
 end;
 case Key of
'0'..'4',Chr(8) : ;
 else Key:=Chr(0); {запрещенные символы не отображать}
end;
end;

procedure TForm1.Edit2Exit(Sender: TObject);
var q:String;
begin
q:=Form1.Edit2.Text;
end;

end.
у вас q - локальная переменная, и дальше чем begin q:=Form1.Edit2.Text; end; её действие не распространаятся... Нужно описать её как глобальную, и по умолчанию приравнять пустой строке, например при создании формы... И при вызове FTK проверять не равна ли она пустой строке. Если равна, то не вызывать FTK - нет в этом смысла

Последний раз редактировалось Alex_FF; 21.12.2009 в 01:07.
Alex_FF вне форума Ответить с цитированием
Старый 21.12.2009, 01:09   #7
Alex_FF
Удален
Форумчанин
 
Регистрация: 02.12.2009
Сообщений: 309
По умолчанию

я красным выделил то, что изменил или дописал...
Код:
const MaxSgn = 6; {Максимальное значение в числе}
Sgn = 4; {Количество цифр в числе}
type
    S = 1..MaxSgn;
    Numb = array[1..Sgn] of S;
type
Step = Record {Информация об одном вопросе - ответе}
n : Numb; {Спрошенное число}
answer : integer; {Ответ}
q:String;
end;
Game = array[1..32] of step;
{Информация о всех вопросах - ответах}
type
  TForm1 = class(TForm)
    MainMenu1: TMainMenu;
    N1: TMenuItem;
    N2: TMenuItem;
    N3: TMenuItem;
    N4: TMenuItem;
    N5: TMenuItem;
    N7: TMenuItem;
    N6: TMenuItem;
    ImageList1: TImageList;
    Edit1: TEdit;
    Label1: TLabel;
    Label2: TLabel;
    Memo1: TMemo;
    Image1: TImage;
    Label3: TLabel;
    Edit2: TEdit;

    procedure N6Click(Sender: TObject);
    procedure N3Click(Sender: TObject);
    procedure N4Click(Sender: TObject);
    procedure N5Click(Sender: TObject);
    procedure FormCreate(Sender: TObject);
    procedure Edit2KeyPress(Sender: TObject; var Key: Char);
    procedure Edit2Exit(Sender: TObject);
  
  private
    { Private declarations }
  public
    { Public declarations }
  end;

var
  Form1: TForm1;
  q: String;

implementation

uses About_unit, F_help;

{$R *.dfm}

procedure TForm1.N6Click(Sender: TObject);
begin
  Close;
end;

procedure TForm1.N3Click(Sender: TObject);
begin
  AboutForm.ShowModal;
end;

procedure TForm1.N4Click(Sender: TObject);
begin
   Help_Form.ShowModal;
end;

function cows(n1,n2:Numb):integer;
{Сравнивает два числа и возвращает результат
сравнения в виде <количество быков>*10+<количество коров>}
var i1,i2 : 1..Sgn;
a : integer;
begin
{Необходимо сравнивать все цифры первого
числа со всеми цифрами второго}
a:=0;
for i1:=1 to Sgn do
for i2:=1 to Sgn do
if n1[i1]=n2[i2] then
if i1=i2 then a:=a+10 {Встретился 'Бык'}
else inc(a);
cows:=a;
end;

Function DiffParamToStr(Code, BiK: Numb):string;
var s: string;
    i: byte;
begin
s:='';
for i:=1 to 4 do
s:=s+inttostr(Code[i]);
s:=s+'   ';
if BiK[1]>=0 then s:=s+inttostr(Bik[1])+'б. ';
if BiK[2]>=0 then s:=s+inttostr(Bik[2])+'к. ';
while length(s)<20 do
s:=s+' ';
DiffParamToStr:=s;
end;

procedure FTK; {пересчет }
var Nstep : integer; {Номер текущего шага}
Info : Game; CaptionStr:String;
Curnumb,vec : Numb; i,j : integer; b : boolean;
BEGIN
Nstep:=0;
for i:=1 to Sgn do Curnumb[i]:=i;
Form1.Label2.caption:='';
while true do
{Пока не будут перебраны все числа
или не найденно решение}
begin
{Спросить текущее число}
Form1.Edit1.Text:='';
for i:=1 to Sgn do Form1.Edit1.Text:=Form1.Edit1.Text+IntToStr(Curnumb[i]);
CaptionStr:='';
 Form1.Edit2.SetFocus;
 CaptionStr:=Form1.Edit2.Text;
 //Здесь у меня ошибка, так как происходит присвоение переменной
 до ввода пользователем заданных значений.
vec[1]:=strtoint(CaptionStr)div 10; //быки
vec[2]:=strtoint(CaptionStr)mod 10; //коровы
form1.memo1.text:=form1.memo1.text+DiffParamToStr(Curnumb,vec);
inc(Nstep);
Info[Nstep].n:=Curnumb;
Info[Nstep].Answer:=StrToint(CaptionStr);
{Пользователь должен ввести число, первая цифра
которого 'Быки', вторая - 'Коровы'}
{'Быков' и 'Коров' вместе не может быть больше, чем цифр}
if Info[Nstep].Answer=10*Sgn then exit;
{Далее идет генерация нового числа}
repeat
i:=Sgn;
{Увеличение числа на 1-цу}
while (i>=1) and (Curnumb[i]=MaxSgn) do
begin
Curnumb[i]:=1;
dec(i);
end;
if i<1 then
begin {Все числа перебраны, а ответ не найден}
Form1.Label2.caption:='Вы неправильно отвечали !';
exit;
end;
inc(Curnumb[i]);
b:=true;
{Проверка на встречающиеся одинаковые цифры}
for i:=1 to Sgn do
for j:=i+1 to Sgn do
b:=b and (Curnumb[i]<>Curnumb[j]);
for i:=1 to Nstep
   do b:=b and (cows(Curnumb,Info[i].n)=Info[i].Answer);
until b;
end; {while}
end;

procedure TForm1.N5Click(Sender: TObject);
begin
Form1.Edit1.Text:='';
Form1.Label3.caption:='Загаданное число:';
  if q <> '' then FTK;
end;

procedure TForm1.FormCreate(Sender: TObject);
begin
form1.memo1.text:='';
  q := '';
end;

procedure TForm1.Edit2KeyPress(Sender: TObject; var Key: Char);
begin
 if (Length(Edit2.Text)=2) and (key <> #8) then
 Begin
 if (key=chr(13)) and (Length(Edit2.Text)<>0) Then exit;
 Key:=Chr(0);
 end;
 case Key of
'0'..'4',Chr(8) : ;
 else Key:=Chr(0); {запрещенные символы не отображать}
end;
end;

procedure TForm1.Edit2Exit(Sender: TObject);
// var q:String; - это не надо!
begin
q:=Form1.Edit2.Text;
end;

end.
вот так должно работать

Последний раз редактировалось Alex_FF; 21.12.2009 в 01:28.
Alex_FF вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Быки и коровы Димарик Помощь студентам 5 01.12.2009 19:51
Игра DimR Фриланс 5 19.11.2009 19:12
Игра VictorS Помощь студентам 1 31.05.2009 16:34
игра "быки и коровы на VB" Ыыыга Помощь студентам 1 21.05.2009 16:37
Игра "Быки и коровы"(Паскаль) bobby2008 Помощь студентам 33 12.05.2009 23:44