Текущий архив: 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]
Его никак не использовать, ибо бред полный!
Страницы: 1 2 вся ветка
Текущий архив: 2006.07.16;
Скачать: CL | DM;
Память: 0.55 MB
Время: 0.009 c