Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2006.07.16;
Скачать: CL | DM;

Вниз

Не понимаю циклы. Помогите.   Найти похожие ветки 

 
b.o.n.d.007 ©   (2006-06-26 19:43) [0]

Например. Есть одна надпись Label1 "0", при нажатии на кнопку Button1 надпись должна менятся на "1". С каждым новым нажатием, цыфра в надписи должна увеличиваться на "1" . Короче - Счётчик нажатий.
Но цыфра должна увеличиваться до значения "10", а потом опять с нуля, и т.д.
Вот как это сделать.


 
Fay ©   (2006-06-26 19:52) [1]

У тебя ошибка в программе. В 17- строке.


 
Шпиён   (2006-06-26 20:00) [2]

Можно так:

var i:integer=0; //счетчик
................................
procedure TForm1.Button1Click(Sender: TObject);
begin
   inc(i);
   if i > 10 then i:= 0;
   Label1.Caption:=IntToStr(i);
end;


а можно вот так:

// например, при создании формы
Label1.Caption := "0";
..........................................
procedure TForm1.Button1Click(Sender: TObject);
var i:integer;
begin
   try
       i := StrToInt(Label1.Caption);
   except
   on EConvertError do i:=0;
  end;
   inc(i);
   if i > 10 then i:= 0;
   Label1.Caption:=IntToStr(i);
end;


 
b.o.n.d.007 ©   (2006-06-26 20:01) [3]


> У тебя ошибка в программе. В 17- строке.


в какой программе?

мне счётчик надо.


 
Пусик ©   (2006-06-26 20:14) [4]


> b.o.n.d.007 ©   (26.06.06 20:01) [3]
> > У тебя ошибка в программе. В 17- строке.в какой программе?
> мне счётчик надо.


Ты учишься программировать или нет?
Тогда пытайся делать и показывай, что не получается.
За тебя никто писать программы не будет.


 
Leonid Troyanovsky ©   (2006-06-26 20:14) [5]


> b.o.n.d.007 ©   (26.06.06 19:43)  

> Но цыфра должна увеличиваться до значения "10"


Это, наверное, одинацитиричная цифра.

--
Regards, LVT.


 
Шпиён   (2006-06-26 20:17) [6]


> Leonid Troyanovsky ©   (26.06.06 20:14) [5]

I - V -  X -  L.... Римская -)


 
Fay ©   (2006-06-26 20:18) [7]

Блин! Мне даже в голову не пришло, что у него вАщЕ никакого кода нет!
Я фигею...

2 b.o.n.d.007 ©   (26.06.06 20:01) [3]
> мне счётчик надо.
Тебе букварь надо.


 
Мефисто   (2006-06-26 20:26) [8]

Fay  ©   (26.06.06 20:18) [7]

Ню, образование у него еще только по анкете среднее, он еще маааааленький :) Но это не повод просить опенсоурце в наглую на халяву ;)


 
Palladin ©   (2006-06-26 20:33) [9]

ох господи... жуть... ладна :)

OnButton1Click
begin
(sender as TButton).tag:=(sender as TButton).tag+1;
ShowMessage("ну ты уже жмыкнул баттон "+inttostr((sender as tbutton).tag)+" раз");
end


 
Leonid Troyanovsky ©   (2006-06-26 20:42) [10]


> Palladin ©   (26.06.06 20:33) [9]

> (sender as TButton).tag:=(sender as TButton).tag+1;


(tag+1) mod 11;

--
Regards, LVT.


 
Palladin ©   (2006-06-26 20:56) [11]

:) а, ну да... тз не внимательно прочитал, спасибо :)


 
b.o.n.d.007 ©   (2006-06-26 21:31) [12]


> Fay ©   (26.06.06 20:18) [7]
> Я фигею...
> Тебе букварь надо.


Взрослый человек, а ведёшь себя, как ребёнок, только бы по стибаться да по хи-хикать над кем-нибудь, кто знает меньше твоего.
Думаешь тебя не видно, можно делать всё что вздумается. Относись к людям с должным уважением.
Я не собираюсь оправдываться почему я этого не знаю. Не знаю, и всё!
Думал здесь люди понимающие, а оказалось... Ну может не все такие, но с "некоторыми" приходиться сталкиваться.
Спасибо тебе Fay за прямоты, сомневаюсь, что ты мастер по Делфи!!!

В отличии от тебя, тут мне хоть пытались помочь...


 
Fay ©   (2006-06-26 21:38) [13]

2 b.o.n.d.007 ©   (26.06.06 21:31) [12]
Ладно, уговорил. Буквари можешьь не читать.

> сомневаюсь, что ты мастер по Делфи!!!
Всё! Пойду и застрелюсь! Не видать тебе больше моих прямотей!

З.Ы.
> отличии от тебя
Не, всё-таки буквари пригодятся...


 
b.o.n.d.007 ©   (2006-06-26 22:18) [14]


> Palladin ©   (26.06.06 20:33) [9]
> ох господи... жуть... ладна :)
>
> OnButton1Click
> begin
> (sender as TButton).tag:=(sender as TButton).tag+1;
> ShowMessage("ну ты уже жмыкнул баттон "+inttostr((sender
> as tbutton).tag)+" раз");
> end


Спасибо, я подставил своё - всё работает. Только один вопрос, как этот счётчик ограничить до 4 и дальше бы он считал по новой?


 
Virgo_Style ©   (2006-06-26 22:26) [15]

b.o.n.d.007 ©   (26.06.06 22:18) [14]

прочитай [10]


 
b.o.n.d.007 ©   (2006-06-26 22:30) [16]


> прочитай [10]


он запустит всё с начала? Я уже ограничел, что бы считало до 4, а нужно что при следующем нажатии было сново 1 и т.д.


 
Fay ©   (2006-06-26 22:32) [17]

2 b.o.n.d.007 ©   (26.06.06 22:30) [16]
Ну показывай, что ты написал.


 
Мефисто   (2006-06-26 22:36) [18]

Если под свои нужды не можем перелопатить готовое выше, тогда

Fay  ©   (26.06.06 20:18) [7]

Уважайте труд отвечающих ;)


 
b.o.n.d.007 ©   (2006-06-26 22:38) [19]

procedure Tkursovik.onButton1Click(Sender: TObject);
begin

if (sender as TButton).tag<>n
then (sender as TButton).tag:=(sender as TButton).tag+1;

Label19.Caption:="Период n-"+IntToStr((sender as tbutton).tag);
end;


 
b.o.n.d.007 ©   (2006-06-26 22:39) [20]

n=4


 
Virgo_Style ©   (2006-06-26 22:42) [21]

b.o.n.d.007 ©   (26.06.06 22:38) [19]
Tkursovik


Курсовик???!!!

Ой. Мама.


 
b.o.n.d.007 ©   (2006-06-26 22:44) [22]


> Курсовик???!!!
>
> Ой. Мама.


Это всего лишь название Формы))


 
Fay ©   (2006-06-26 22:47) [23]

const
 n = 4;

procedure Tkursovik.onButton1Click(Sender: TObject);
{$DEFINE WITH_ZERO}
begin
 with (Sender as TButton) do
   begin
{$IFDEF WITH_ZERO}
     Tag := (Tag + 1) mod (n + 1);
{$ELSE}
     Tag := (Tag + 1) mod n;
{$ENDIF}
     Label19.Caption := Format("Период %d-%d", [n, Tag]);
   end;
end;


 
b.o.n.d.007 ©   (2006-06-26 22:52) [24]

Всё хотел спросить, а что такое "tag"?


 
Джо ©   (2006-06-26 22:55) [25]

> [24] b.o.n.d.007 ©   (26.06.06 22:52)
> Всё хотел спросить, а что такое "tag"?

Если хотел узнать, то научу как. Наводишь на это слово курсор и жмешь F1. Там будет сказано о нем не мало.


 
Fay ©   (2006-06-26 22:55) [26]

2 b.o.n.d.007 ©   (26.06.06 22:52) [24]
> Всё хотел спросить, а что такое "tag"?
Справки у тебя нет?


 
Fay ©   (2006-06-26 22:56) [27]

2 Джо ©   (26.06.06 22:55) [25]
Ты только что всех нас сдал! 8)


 
b.o.n.d.007 ©   (2006-06-26 23:02) [28]

А вот без tag никак нельзя?
Ну, там, через FOR или ещё как.
Число, которое меняется при нажатии - "i" далее учавствует в формуле, как показатель периода, за который считается.


 
Джо ©   (2006-06-26 23:03) [29]

> [28] b.o.n.d.007 ©   (26.06.06 23:02)

Ну купи, наконец, книжку. Или скачай. Смешно же.


 
b.o.n.d.007 ©   (2006-06-26 23:06) [30]

Я понимаю, что смешно (Вам), а вот мне как-то не очень. Если вдруг понадобилось написать прогу, вообще Делфи не проходя. Вот так взять и с нуля без знаний сделать.


 
Fay ©   (2006-06-26 23:11) [31]

Ой, а у меня ошибка 8)

{$DEFINE WITH_ZERO}
begin
 with (Sender as TButton) do
   begin
{$IFDEF WITH_ZERO}
     Tag := (Tag + 1) mod (n + 1);
     Label1.Caption := Format("Период %d-%d", [n, Tag]);
{$ELSE}
     Label1.Caption := Format("Период %d-%d", [n, Tag + 1]);
     Tag := (Tag + 1) mod n;
{$ENDIF}
   end;


2 b.o.n.d.007 ©   (26.06.06 23:06) [30]
> вдруг понадобилось написать прогу, вообще Делфи не проходя.
> взять и с нуля без знаний сделать.
Согласен. Это не смешно. Это уже клиника.


 
Джо ©   (2006-06-26 23:22) [32]

2 b.o.n.d.007 ©

Задача довольно сложная, Вы правы. Тут требуется нешуточное знание принципов ООП (объектно-ориентированного программирования).

type

 TCyclicCounter = class
 private
   FValue,
   FUpperBound: Integer;
 public
   constructor Create (AUpperBound: Integer = 100);
   procedure Increment;
   property Value: Integer read FValue;
 end;

 TForm1 = class(TForm)
   Button1: TButton;
   Label1: TLabel;
   procedure FormCreate(Sender: TObject);
   procedure FormDestroy(Sender: TObject);
   procedure Button1Click(Sender: TObject);
 private
   FCounter: TCyclicCounter;
 end;

var
 Form1: TForm1;

implementation

{$R *.dfm}

{ TCyclicCounter }

constructor TCyclicCounter.Create(AUpperBound: Integer);
begin
 FUpperBound := AUpperBound
end;

procedure TCyclicCounter.Increment;
begin
 Inc (FValue);
 if FValue > FUpperBound then
   FValue := 0
end;

procedure TForm1.FormCreate(Sender: TObject);
begin
 FCounter := TCyclicCounter.Create(10);
 Label1.Caption := "0"
end;

procedure TForm1.FormDestroy(Sender: TObject);
begin
 FCounter.Free
end;

procedure TForm1.Button1Click(Sender: TObject);
begin
 FCounter.Increment;
 Label1.Caption := IntToStr(FCounter.Value)
end;


 
Fay ©   (2006-06-26 23:28) [33]

2 Джо ©   (26.06.06 23:22) [32]
Всё очень здорово, но класс TCyclicCounter НЕ потокобезопасный!
8)


 
Джо ©   (2006-06-26 23:32) [34]

> [33] Fay ©   (26.06.06 23:28)
> 2 Джо ©   (26.06.06 23:22) [32]
> Всё очень здорово, но класс TCyclicCounter НЕ потокобезопасный!

Внес в todo :)


 
b.o.n.d.007 ©   (2006-06-26 23:36) [35]

нам в задании было предложено как-то исходить из такого:

Procedure TData_Form.FormCreat(Sender: TObject);
begin
   i1:=1; i2:=0; j=1;
   Label19.Caption:="Период n-"+IntToStr(i1);
   Label20.Caption:="Период n-"+IntToStr(i2);
end;

Есле я правельно понимаю, что-то делается при создании формы...


 
Мефисто   (2006-06-26 23:42) [36]

b .o.n.d.007 ©   (26.06.06 23:36) [35]

Этот код был в задании предложен?


 
Джо ©   (2006-06-26 23:44) [37]

Ладно, пускай будет потоконезависимым, а то что это? в конце-то концов...

// Версия вторая.

 TCyclicCounter = class
 private
   FCriticalSection: TCriticalSection;
   FValue,
   FUpperBound: Integer;
 public
   constructor Create (AUpperBound: Integer = 100);
   destructor Destroy;
   procedure Increment;
   property Value: Integer read FValue;
 end;

implementation

constructor TCyclicCounter.Create(AUpperBound: Integer);
begin
 FCriticalSection := TCriticalSection.Create;
 FUpperBound := AUpperBound
end;

destructor TCyclicCounter.Destroy;
begin
 FCriticalSection.Free
end;

procedure TCyclicCounter.Increment;
begin
 FCriticalSection.Acquire;
 try
   Inc (FValue);
   if FValue > FUpperBound then
     FValue := 0
 finally
   FCriticalSection.Release
 end
end;


 
b.o.n.d.007 ©   (2006-06-26 23:52) [38]


> Мефисто   (26.06.06 23:42) [36]
> b .o.n.d.007 ©   (26.06.06 23:36) [35]
>
> Этот код был в задании предложен?


Да. Как его использовать только?


 
Fay ©   (2006-06-26 23:55) [39]

2 Джо ©   (26.06.06 23:44) [37]
Предлагаю
1) сделать процедуру Increment функцией.
2) добавить событие OnIncrement
3) классу присвоить внеочередное звание компонента, после чего расписать ему сохраниение/чтение в поток/из потока (Stream).


 
Мефисто   (2006-06-26 23:58) [40]

b .o.n.d.007 ©   (26.06.06 23:52) [38]

Его никак не использовать, ибо бред полный!


 
Fay ©   (2006-06-26 23:59) [41]

2 b.o.n.d.007 ©   (26.06.06 23:52) [38]

Я так понял, что есть какое-то задание (уж не курсовая ли?), которое дали тебе...
Текст его секретен?


 
Джо ©   (2006-06-27 00:07) [42]

> [39] Fay ©   (26.06.06 23:55)
> 2 Джо ©   (26.06.06 23:44) [37]
> Предлагаю
> 1) сделать процедуру Increment функцией.
> 2) добавить событие OnIncrement
> 3) классу присвоить внеочередное звание компонента, после
> чего расписать ему сохраниение/чтение в поток/из потока
> (Stream).

В todo, в todo его :-)


 
b.o.n.d.007 ©   (2006-06-27 00:08) [43]


> Fay ©   (26.06.06 23:59) [41]
> 2 b.o.n.d.007 ©   (26.06.06 23:52) [38]
>
> Я так понял, что есть какое-то задание (уж не курсовая ли?
> ), которое дали тебе...
> Текст его секретен?


Нет текст его не секретен, но текст НУ Очень большой (17 листов в Ворде).
К тому же ОНО только называется куровым, это контрольная. По которой Завтра отвечать)).


 
Джо ©   (2006-06-27 00:10) [44]

> [43] b.o.n.d.007 ©   (27.06.06 00:08)
> 17 листов в Ворде.

Извините, но задачу такого плана расписать на 17 листов в Ворде можно только в случае 25-сантиметрового межстрочного интервала.


 
b.o.n.d.007 ©   (2006-06-27 00:13) [45]

Это экономический расчёт для предприятия, с тупым описанием (см. предложеный выше код) приблизительного решения. Там график показан, который делать надо; Вид Формы и т.д.


 
b.o.n.d.007 ©   (2006-06-27 00:14) [46]

17 листов- это я укоротил, там ещё всТУПление было.


 
SergP.   (2006-06-27 00:16) [47]

> [3] b.o.n.d.007 ©   (26.06.06 20:01)
>
> > У тебя ошибка в программе. В 17- строке.
>
>
> в какой программе?


В той что на дезоксuрuбонуклеuновокислотном носителе записана.


 
b.o.n.d.007 ©   (2006-06-27 00:19) [48]


> SergP.   (27.06.06 00:16) [47]
> В той что на дезоксuрuбонуклеuновокислотном носителе записана.
>


ХА-Ха-ха


 
Германн ©   (2006-06-27 00:24) [49]


> b.o.n.d.007 ©   (26.06.06 23:06) [30]
> Я понимаю, что смешно (Вам), а вот мне как-то не очень.
> Если вдруг понадобилось написать прогу, вообще Делфи не
> проходя. Вот так взять и с нуля без знаний сделать.

"Опять двойка"
© П.Федотов. Если не ошибаюсь.
Ну что ещё добавить? "Ты всё пела - это дело, так поди же попляши" © А.Крылов.


 
b.o.n.d.007 ©   (2006-06-27 00:27) [50]

о-о-о-о-о-о-о-о-о

один Биолог
другой Литератор

м-м-м да....


 
Мефисто   (2006-06-27 00:31) [51]

b .o.n.d.007 ©   (27.06.06 00:27) [50]

Чувствую курсач тебе завтра не здать. Этот форум без техподдержки плохо работает...


 
b.o.n.d.007 ©   (2006-06-27 00:35) [52]


> Чувствую курсач тебе завтра не здать. Этот форум без техподдержки
> плохо работает...

я думал об ентом..


 
Германн ©   (2006-06-27 01:22) [53]


> я думал об ентом..

Раньше надо было думать! А сечас пора "трясти"!
© Василий Иванович + Петька.


 
Palladin ©   (2006-06-27 02:16) [54]


> b.o.n.d.007 ©   (27.06.06 00:35) [52]

слушай, ну сколько можно быть таким бесчувственным

ты омлет готовить умеешь?

от остальных попрошу тишины


 
Fay ©   (2006-06-27 02:33) [55]

(тихо) ахтунг...


 
Плохиш ©   (2006-06-27 11:14) [56]


> b.o.n.d.007 ©   (26.06.06 23:06) [30]
> Я понимаю, что смешно (Вам), а вот мне как-то не очень.
> Если вдруг понадобилось написать прогу, вообще Делфи не
> проходя
. Вот так взять и с нуля без знаний сделать.


> b.o.n.d.007 ©   (26.06.06 23:36) [35]
> нам в задании было предложено как-то исходить из такого:
>

Это РАЗВОД!


 
b.o.n.d.007 ©   (2006-06-28 13:48) [57]

причёл здесь омлет?


 
Fay ©   (2006-06-28 15:05) [58]

2 b.o.n.d.007 ©   (28.06.06 13:48) [57]
> причёл здесь омлет?
Тебе сложно ответить?


 
b.o.n.d.007 ©   (2006-06-28 19:17) [59]

и так и так. Начни с простого.


 
Fay ©   (2006-06-28 19:29) [60]

2 b.o.n.d.007 ©   (28.06.06 19:17) [59]
> и так и так. Начни с простого.
М.б. я чё-то не понимаю, но мне показалось, что вопрос "Тебе сложно ответить?" был воспринят как "Ты хочешь получить сложный ответ, или простой?".
На всякий случай перефразирую.
> причёл здесь омлет?
Ты наверняка не очень сильно устанешь, если всё-таки расскажешь Palladin-у о своём умении делать омлет.


 
AlexWlad ©   (2006-06-28 19:52) [61]

Наблюдение: чем "тупее" вопрос - тем длиннее и "содержательней" дискуссия...


 
Fay ©   (2006-06-28 19:54) [62]

2 AlexWlad ©   (28.06.06 19:52) [61]
Самое удивительное то, это тема циклов не раскрыта вАщЕ !
8)


 
b.o.n.d.007 ©   (2006-06-28 20:35) [63]


> Palladin ©


ОМЛЕД я не ляблю и, соответственно не делаю его.


> Fay ©   (28.06.06 19:54) [62]
> 2 AlexWlad ©   (28.06.06 19:52) [61]
> Самое удивительное то, это тема циклов не раскрыта вАщЕ
> !
> 8)

А вот с этим я согласен. Хотя, мне это уже не очень-то нужно, я уже защитил прогу, осталось написать теорию.


 
Fay ©   (2006-06-28 20:38) [64]

2 b.o.n.d.007 ©   (28.06.06 20:35) [63]
> я уже защитил прогу
Да?!! Сам? Свою? На Delphi?


 
b.o.n.d.007 ©   (2006-06-28 20:52) [65]


> Fay ©   (28.06.06 20:38) [64]
> 2 b.o.n.d.007 ©   (28.06.06 20:35) [63]
> > я уже защитил прогу
> Да?!! Сам? Свою? На Delphi?


АГА.


 
Fay ©   (2006-06-28 21:51) [66]

2 b.o.n.d.007 ©   (28.06.06 20:52) [65]
Ну тогда ты просто аццкий сотона!


 
tButton ©   (2006-06-29 05:23) [67]

Я умею делать омлет =)
Я вообще "Мастер Омлетов"
а циклы здесь ну никак не при делах =)


 
Lagrima_JN ©   (2006-06-30 16:50) [68]

В орешник!!


 
Плохиш ©   (2006-06-30 17:31) [69]


> Lagrima_JN ©   (30.06.06 16:50) [68]
> В орешник!!

С каких пор орешник стал свалкой плоской тупости?


 
Джо ©   (2006-06-30 17:34) [70]

> [69] Плохиш ©   (30.06.06 17:31)
>
> > Lagrima_JN ©   (30.06.06 16:50) [68]
> > В орешник!!
>
> С каких пор орешник стал свалкой плоской тупости?

В орешнике есть всё. В том числе, и это.



Страницы: 1 2 вся ветка

Текущий архив: 2006.07.16;
Скачать: CL | DM;

Наверх




Память: 0.65 MB
Время: 0.028 c
15-1150268707
Megabyte
2006-06-14 11:05
2006.07.16
В полку инженеров прибыло! %)


2-1151385632
xZorg
2006-06-27 09:20
2006.07.16
Socket s


15-1150423842
Думкин
2006-06-16 06:10
2006.07.16
Bill Gates


9-1131821987
Кефир87
2005-11-12 21:59
2006.07.16
gluProject вызывает Run time error?!


8-1137709538
Nailspb
2006-01-20 01:25
2006.07.16
Drag &amp; Drop