Top.Mail.Ru
Мастера DELPHI, Delphi programming community Титульная страница Поиск, карта сайта Написать письмо 
| Новости | Поиск | FAQ | Статьи | Книги | Новости VCL |
| Форумы ЧАТ | Орешник | KOL и MCK |
Форумы -» Основная («Начинающим»)/ Базы / WinAPI / Компоненты / Сети / Media / Игры / Corba и COM / KOL / FreePascal / .Net / Прочее / RSDN.ORG

« предыдущая ветвь | форум | следующая ветвь »

Не понимаю циклы. Помогите. [D7, XP]


Страницы:   1 2 3 4

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

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


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

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

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

м-м-м да....


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


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

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


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


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


ХА-Ха-ха


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

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


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


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

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


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

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


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

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

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


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


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


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


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

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

В todo, в todo его :-)


Fay   (2006-06-26 23:59:00) [30]

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

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


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

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

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


Fay   (2006-06-26 23:55:00) [32]

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


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


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


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


Джо   (2006-06-26 23:44:00) [34]

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

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

 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;


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

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

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


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

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

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:32:00) [37]

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

Внес в todo :)


Fay   (2006-06-26 23:28:00) [38]

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


Джо   (2006-06-26 23:22:00) [39]

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:11:00) [40]

Ой, а у меня ошибка 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]
> вдруг понадобилось написать прогу, вообще Делфи не проходя.
> взять и с нуля без знаний сделать.
Согласен. Это не смешно. Это уже клиника.


Страницы:   1 2 3 4

Наверх

Титульная страница Поиск, карта сайта Написать письмо