Autor Beitrag
Bela Urlaub
ontopic starhalf ontopic starofftopic starofftopic starofftopic starofftopic starofftopic starofftopic star
Beiträge: 453

WinXP Prof/Home, Win98SE (nur auf Server)
D6 Pers
BeitragVerfasst: Sa 14.06.03 22:18 
Hi Leutz,
Wollt fragen, wie ich nen sichtabre Countdown erstelle, der nach einer weile ein Formular meines Programms beendet.
Ich weiss, dass das mit dem Timer geht, aber wie?

_________________
mensch, menschen können auch probleme haben...
Terra23
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starofftopic star
Beiträge: 872

Win 8
Delphi 7
BeitragVerfasst: Sa 14.06.03 22:48 
Hi Bela.

Der Timer hat die Eigenschaft Interval. 1000 bedeutet in dem Falle des normalen Timers, 1 Sekunde; sprich, dein Timer tut bei der Einstellung jede Sekunde etwas.

Beispiel:

Du willst dein Programm nach einer Minute beenden.
1)
F: Wie viele Sekunden hat eine Minute?
A: 1 Minute × 60 Sekunden = 60 Sekunden

2)
Du nimmst eine Variable (Countdown) vom Typ Integer und programmierst eine Close-Prozedur auf eine Minute (nachdem du die Variable "global" definiert hast):

ausblenden Delphi-Quelltext
1:
var Countdown: Integer;					


ausblenden Delphi-Quelltext
1:
2:
3:
4:
TForm1.FormCreate(Sender: TObject);
begin
Countdown:=0;
end;


ausblenden Delphi-Quelltext
1:
2:
3:
4:
5:
TForm1.Timer1OnTimer(Sender: TObject);
begin
Countdown:=Countdown+1;
If Countdown=60 Then Close;
end;


Müßte so gehen. Also, dein Timer tut nach seinem Intervall immer etwas, also wie hier z.B. eine Variable um 1 erhöhen.

///edit -> Quellcode korrigiert, Kapitel über lokale Varibalen gelsen @ Luckie.. ;-) Nichts für Ungut..

_________________
Hasta La Victoria Siempre


Zuletzt bearbeitet von Terra23 am So 15.06.03 16:04, insgesamt 1-mal bearbeitet
Luckie
Ehemaliges Mitglied
Erhaltene Danke: 1



BeitragVerfasst: Sa 14.06.03 22:57 
Dein Countdown ist eine lokale Variable, die bei jeden erneuten Aufruf von OnTimer mit Schrott initialisiert wird.
Bela Urlaub Threadstarter
ontopic starhalf ontopic starofftopic starofftopic starofftopic starofftopic starofftopic starofftopic star
Beiträge: 453

WinXP Prof/Home, Win98SE (nur auf Server)
D6 Pers
BeitragVerfasst: Sa 14.06.03 23:19 
Naja... Habs anders gelöst bekommen
Ich hatte nen SpeedButton auch mit nem manuellen Close; bestückt und hab einfach umgeleitet...
Trotzdem THX

(PS: irgendwie hat dein Code net geklappt)

_________________
mensch, menschen können auch probleme haben...
waldmeister
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 136

Win XP
D7 Enterp
BeitragVerfasst: So 15.06.03 08:51 
liegt daran, dass countdown ne globale variable sein muss un vorher per

ausblenden Quelltext
1:
2:
initialization
countdown:=0;


einen Wert zugewiesen bekommen muss!

_________________
der wald....der meister....der meister des waldes....der waldmeister
Terra23
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starofftopic star
Beiträge: 872

Win 8
Delphi 7
BeitragVerfasst: So 15.06.03 15:08 
@Luckie: Ich weiß schon, daß die global sein sollte. Ich dachte halt für's besser Verständnis, daß es auch lokal geht. Dann erkläre mir doch mal, warum das unpraktisch ist (aber nicht wieder gleich ausfallend werden :? ). Und das man die vorher auf 0 setzen muß ist mir auch klar, ich hab's bloß vergessen.

_________________
Hasta La Victoria Siempre
Luckie
Ehemaliges Mitglied
Erhaltene Danke: 1



BeitragVerfasst: So 15.06.03 15:36 
Wie so sollte ich ausfallend werden?

Es ist nicht unpraktisch, es geht einfach nicht, da eine lokale Variable nach dem Verlassen der Prozedur nicht mehr existiert und sie jedes mal neu angelegt und nicht initialisiert wird, dass sie dabei ihren Inhalt verliertt dürfte wohl klar sein.

Les mal das Kapitel über Variablen in deinem Grundlagenbuch und kuck genau hin, was da über die Eigenschaften von lokalen Variablen steht.

Und wenn du weißt, dass es so nicht geht, warum postetst du dann fehlerhagften Quellcode? Kuck mal nach, was in den Richtlinien zum posten von Quellcode steht. :wink: