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

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

Вернуться   Форум программистов > Delphi программирование > Общие вопросы Delphi
Регистрация

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 10.06.2009, 16:36   #1
V@mpir
Пользователь
 
Регистрация: 18.03.2009
Сообщений: 54
По умолчанию Каждый раз присваивает заново

Код:
unit Unit1;

interface

uses
  Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
  Dialogs, StdCtrls;

type
  TForm1 = class(TForm)
    Button1: TButton;
    Label1: TLabel;
    Label2: TLabel;
    Label3: TLabel;
    Label4: TLabel;
    procedure Button1Click(Sender: TObject);

  private
    { Private declarations }
  public

       { Public declarations }
  end;

var
  Form1: TForm1;

implementation

{$R *.dfm}

procedure TForm1.Button1Click(Sender: TObject);
var
i,p,o,u:integer;
begin
u:=1000;
randomize;
i:=random(3)+1;
label1.Caption:=IntToStr(i);
p:=random(3)+1;
label2.Caption:=IntToStr(p);
o:=random(3)+1;
label3.Caption:=IntToStr(o);
 if ((p=i) and (i=o) and (o=p))
 then
 u:=u*2
else
u:=u-100;
label4.caption:=IntToStr (u);
 end;
end.
Программа почему то каждый раз заново присваивает "U" значение 1000, а должна выполнять действия с уже измененным значением?

Последний раз редактировалось Stilet; 10.06.2009 в 16:47.
V@mpir вне форума Ответить с цитированием
Старый 10.06.2009, 16:43   #2
Neeter
Форумчанин
 
Аватар для Neeter
 
Регистрация: 22.02.2009
Сообщений: 875
По умолчанию

У меня все работает. U равно то 900, то 2000
Чтобы обнаруживать ошибки, программист должен иметь ум, которому доставляет удовольствие находить изъяны там, где, казалось, царят красота и совершенство.
Neeter вне форума Ответить с цитированием
Старый 10.06.2009, 17:00   #3
ViNcHeStEr
Delphi
Форумчанин
 
Регистрация: 12.06.2008
Сообщений: 137
По умолчанию

У меня тоже работает, то 900, то 2000.
//если имеешь ввиду, что когда повторно нажимаешь кнопку u присваивается 1000, то нужно u:=1000; написать здесь:
Код:
procedure TForm1.FormCreate(Sender: TObject);
begin
u:=1000; //выполняется при создании формы
end;
а в описании кнопки u:=1000; удалить.

Последний раз редактировалось ViNcHeStEr; 10.06.2009 в 17:05.
ViNcHeStEr вне форума Ответить с цитированием
Старый 10.06.2009, 18:23   #4
V@mpir
Пользователь
 
Регистрация: 18.03.2009
Сообщений: 54
По умолчанию

Ну вот так как раз таки не должно быть (2000. 900) должно быть так 1000 и от неё в зависимости от рандома или убывает 100 или умножается на 2 но убывать и умножаться должно уже от получившегося результата тоесть например: выпало что не все равны тогда получим 900 выпало еще раз неравны получим 800 и вдруг выпало все равны получим 1600 вот как должно быть.

Вписать переменную в процедуру для формы я побывал, тогда пишет на кнопке не объявленная переменная, прописал и там её в var тогда всё по старому - первая ошибка
V@mpir вне форума Ответить с цитированием
Старый 10.06.2009, 18:29   #5
Пепел Феникса
Старожил
 
Аватар для Пепел Феникса
 
Регистрация: 28.01.2009
Сообщений: 21,000
По умолчанию

обьявите в интерфейсном разделе её+пост номер 3
Код:
unit Unit1;

interface

uses
  Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
  Dialogs, StdCtrls;

type
  TForm1 = class(TForm)
    Button1: TButton;
    Label1: TLabel;
    Label2: TLabel;
    Label3: TLabel;
    Label4: TLabel;
    procedure Button1Click(Sender: TObject);
    procedure FormCreate(Sender: TObject);
  private
    { Private declarations }
  public
    { Public declarations }
  end;

var
  Form1: TForm1;
  u:integer;

implementation

{$R *.dfm}

procedure TForm1.FormCreate(Sender: TObject);
begin
randomize; //выполнять один раз при открытии приложения(не критично, но более правильно)
u:=1000; //выполняется при создании формы
end;

procedure TForm1.Button1Click(Sender: TObject);
var
i,p,o:integer;
begin
i:=random(3)+1;
label1.Caption:=IntToStr(i);
p:=random(3)+1;
label2.Caption:=IntToStr(p);
o:=random(3)+1;
label3.Caption:=IntToStr(o);
 if ((p=i) and (i=o) and (o=p))
 then
 u:=u*2
else
u:=u-100;
label4.caption:=IntToStr (u);
 end;
end.
вроде так получится
Хорошо поставленный вопрос это уже половина ответа. | Каков вопрос, таков ответ.
Программа делает то что написал программист, а не то что он хотел.
Функции/утилиты ждут в параметрах то что им надо, а не то что вы хотите.
Пепел Феникса вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
выписать каждый 5-символ StillFree Microsoft Office Word 23 25.03.2009 22:03
Кнопка "Начать заново" Radar Общие вопросы Delphi 15 24.02.2009 00:16
Как заставить клиентский сокет заново подключится к серверу Vadik(R) Работа с сетью в Delphi 6 01.11.2008 14:30
Для установки второго и последующих сайтов нужно заново покупать лицензию, Это реально? liberty HTML и CSS 10 14.10.2008 10:47
в 1 книге копируется значение ячейки, номер которой каждый раз увеличивается на 1... Dr.Alex Microsoft Office Excel 2 29.10.2007 20:29