Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "Начинающим";
Текущий архив: 2006.07.16;
Скачать: [xml.tar.bz2];

Вниз

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

 
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;
Скачать: [xml.tar.bz2];

Наверх





Память: 0.63 MB
Время: 0.011 c
2-1151659349
D@Nger
2006-06-30 13:22
2006.07.16
Временное отключение DBGrid от DataSet


8-1138909150
Flint-1983
2006-02-02 22:39
2006.07.16
mp3 файлы


2-1151152802
b.o.n.d.007
2006-06-24 16:40
2006.07.16
Я не могу понять, почему Делфи не считает куски формулы?


6-1140887955
Sco
2006-02-25 20:19
2006.07.16
IP адресса


2-1151323955
lobach
2006-06-26 16:12
2006.07.16
Cgi





Afrikaans Albanian Arabic Armenian Azerbaijani Basque Belarusian Bulgarian Catalan Chinese (Simplified) Chinese (Traditional) Croatian Czech Danish Dutch English Estonian Filipino Finnish French
Galician Georgian German Greek Haitian Creole Hebrew Hindi Hungarian Icelandic Indonesian Irish Italian Japanese Korean Latvian Lithuanian Macedonian Malay Maltese Norwegian
Persian Polish Portuguese Romanian Russian Serbian Slovak Slovenian Spanish Swahili Swedish Thai Turkish Ukrainian Urdu Vietnamese Welsh Yiddish Bengali Bosnian
Cebuano Esperanto Gujarati Hausa Hmong Igbo Javanese Kannada Khmer Lao Latin Maori Marathi Mongolian Nepali Punjabi Somali Tamil Telugu Yoruba
Zulu
Английский Французский Немецкий Итальянский Португальский Русский Испанский