![]() |
Hochzählen und dabei gleichzeitig anzeigen
Ich möchte eine eine Variable hochzählen und dabei gleichzeitig in einem Label anzeigen.
Habe das schon mit Timer und Refresh versucht , aber das hat nicht funktioniert Wie kann ich genau auf jedem Rechner die Zeit bestimmen? Bestimmt gibt es dafür schon fertige Code, um diese Variablen anzuzeigen. Aber meine Suche blieb erfolglos. |
Re: Hochzählen und dabei gleichzeitig anzeigen
Delphi-Quellcode:
Eine gigantische Herausforderung. ;)
var
Sekunden: Integer = 0; procedure TForm1.Timer1Timer(Sender: TObject); begin Inc(Sekunden); Label1.Caption := IntToStr(Sekunden); end; |
Re: Hochzählen und dabei gleichzeitig anzeigen
|
Re: Hochzählen und dabei gleichzeitig anzeigen
LOL..
ich wollte nicht die Zeit anzeigen... nein, was ich meinte, ist ... hochzuzählen und dabei in einer Sekunde 6x die Zahl anzuzeigen. Daß quasi eine kleine Animation entsteht. Ich möchte also hochzählen, den Wert 6 x pro Sekunde anzeigen, und die Funktion in der Zwischenzeit wieder an Windows abgeben. EDIT: Dazu gibt es threads.... das weiß ich... ich weiß nur gerade nicht mehr, wie die heißen. |
Re: Hochzählen und dabei gleichzeitig anzeigen
Zitat:
Dazu mußt du den Label einfach nach dem hochzählen neu zeichnen damit die geänderte Zahl jedes angezeigt wird.
Delphi-Quellcode:
So müßte es gehen.
myLabel.Invalidate;
Gruß |
Re: Hochzählen und dabei gleichzeitig anzeigen
mhh, ja , dann muß ich aber noch die prozessorabhängige Wiederholungszeit der For-Schleife ermitteln, damit auf allen Rechnern gleich schnell gezählt wird.
hab nämlich nur 800 MHz. Und wenn das einer mit 3 GHz startet, isses ja sofort zuende. |
Re: Hochzählen und dabei gleichzeitig anzeigen
Dafür ist ja im dem Beispiel oben ein Timer verwendet worden: Wenn du dessen Intervall auf 166 stellst hast du ungefähr 6 Aufrufe des Ereignisses in einer Sekunde. Da baust du dann die Anzeige in deinem Label ein.
|
Re: Hochzählen und dabei gleichzeitig anzeigen
es soll 6 mal in einer sekunde geschehen?
Dann mach doch einfach 1 Sek / 6 -> den Wert in den Timer im timer 2 Variablen einmal die Zahl die du mehrmals anzeigen willst und einmal die Zahl die du bis auf 6 Hochzählst also if Hochgezählte zahl mod 6 = 0 dann soll er die Zahl die du anzeigen willst um eins hochzählen |
Re: Hochzählen und dabei gleichzeitig anzeigen
Zitat:
Im Timer:
Delphi-Quellcode:
ich denke zwar nicht das die lösung gerade profi mäßig ist aber so sollte es auch gehen
var sekunde : integer;
teil_sekunde: real; begin teil_sekunde := 0; sekunde := 0; inc(teil_sekunde); If teil_sekunde >= 6 then begin inc(sekunde); label1.caption := Inttostr(sekunde); end; Form1.refresh; end; |
Re: Hochzählen und dabei gleichzeitig anzeigen
Delphi-Quellcode:
Ich stelle mir das anders vor ... das funktioniert glaube ich auch nicht richtig ...
begin
teil_sekunde := 0; sekunde := 0; inc(teil_sekunde); If teil_sekunde >= 6 then begin inc(sekunde); label1.caption := Inttostr(sekunde); end; Form1.refresh; end;
Delphi-Quellcode:
var zahl1 , Sekunde: integer;
begin inc(Zahl1); If (Zahl1 mod 6 = 0 )then begin inc(sekunde); label1.caption := Inttostr(sekunde); inc(Zahl1) end else begin label1.caption := Inttostr(sekunde); inc(Zahl1); end; Form1.refresh; end; |
Alle Zeitangaben in WEZ +1. Es ist jetzt 02:11 Uhr. |
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024-2025 by Thomas Breitkreuz