Autor Beitrag
Jangojack
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 39

win xp
Delphi 2005 personal,Delphi 7 Enterprise
BeitragVerfasst: Do 14.09.06 08:16 
hi,

ich habe ein programm mit einem zähler, der bis 100 zählt und dann wieder bei 0 anfängt.

ausblenden Delphi-Quelltext
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
{$J+}
procedure TForm.zaehler;
  const
    counter : Integer = 0;
  
     begin
      if counter=100 then counter := 0;
        counter := counter + 1;
      label4.Caption:=inttostr(counter);
   end;
{$J-}


ich möchte nun aus einer anderen prozedure heraus den zähler wieder auf 0 reseten

so ähnlich...
ausblenden Delphi-Quelltext
1:
2:
3:
4:
procedure tform1.reset;
begin
counter:=0;
end;


das geht ja aber leider nicht :)

kann mir jemand helfen???

mfg johannes
Miri
ontopic starontopic starontopic starontopic starontopic starontopic starofftopic starofftopic star
Beiträge: 657


Delphi 3 Prof., Delphi 2005 PE
BeitragVerfasst: Do 14.09.06 08:22 
deklarier doch "counter" einfach global, dann kannst du von überall drauf zugreifen :-)

_________________
Anonymes Eckenkind
ZeitGeist87
ontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic starofftopic star
Beiträge: 1593
Erhaltene Danke: 20

Win95-Win10
Delphi 10 Seattle, Rad Studio 2007, Delphi 7 Prof., C++, WSH, Turbo Pascal, PHP, Delphi X2
BeitragVerfasst: Do 14.09.06 08:26 
und deklarier den 'counter' bitte mit var
weil const ist die Konstantendeklaration und Konstanten sind vom Namen her Konstant also werden normalerweise nicht verändert!

Ansonsten wie Miri sagte: global

LG
Stefan

_________________
Wer Provokationen, Ironie, Sarkasmus oder Zynismus herauslesen kann soll sie ignorieren um den Inhalt meiner Beiträge ungetrübt erfassen zu können.
oldmax
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic star
Beiträge: 380


D3 Prof, D4 Prof
BeitragVerfasst: Do 14.09.06 12:49 
Hi
Es ist vielleicht eine Lapalie, aber du läßt deinen Zähler bis 100 laufen und dann fängt er wieder bei 0 an...
So ist's aber nicht.
Ich bin heut mal pingelig.
Der Casus Knaxus ist in einem Gedankenfehler verborgen und das sind ganz böse Dinger. Hast du eine Abhängigkeit in deinem Counter auf 0, so wird diese nie eintreten und du suchst dir einen Wolf...

ausblenden Delphi-Quelltext
1:
2:
3:
        if counter=100 then counter := 0;  
        counter := counter + 1;  
        // ab hier ist der counter mindestens 1


Es mag banal klingen, aber an einem solchen Fehler suchst du unter Umständen Tage rum. Es geht, wenn du sagst, ich fange bei 1 an. Da macht's auch nichts aus, wenn du den Startwert auf 0 legst, aber so wie du dein Programm siehst, ist's falsch. Stell dir vor, du würdest auf eine Liste mit Einträgen zugreifen oder auf ein Array. Bis du merkst, das von deinen Werten der erste nie gelesen oder geschrieben wird .....
Richtig ist bei deinem Ansatz:

ausblenden Delphi-Quelltext
1:
2:
3:
4:
        counter := -1; 
        if counter=100 then counter := 0  
        else counter := counter + 1;  
        // ab hier ist der counter auch irgendwann einmal 0


Besser is, man gewöhnt sich dran, was man erwartet auch zu programmieren. :wink:
Gruß oldmax

_________________
Zier dich nich so, ich krieg dich schon....