Delphi-PRAXiS
Seite 1 von 2  1 2      

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Sonstige Fragen zu Delphi (https://www.delphipraxis.net/19-sonstige-fragen-zu-delphi/)
-   -   Delphi Hochzählen und dabei gleichzeitig anzeigen (https://www.delphipraxis.net/60848-hochzaehlen-und-dabei-gleichzeitig-anzeigen.html)

Almond 13. Jan 2006 03:12


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.

Oxmyx 13. Jan 2006 03:24

Re: Hochzählen und dabei gleichzeitig anzeigen
 
Delphi-Quellcode:
var
  Sekunden: Integer = 0;

procedure TForm1.Timer1Timer(Sender: TObject);
begin
  Inc(Sekunden);
  Label1.Caption := IntToStr(Sekunden);
end;
Eine gigantische Herausforderung. ;)

gfjs 13. Jan 2006 03:52

Re: Hochzählen und dabei gleichzeitig anzeigen
 
@ Almond

Schaust Du hier: Datum + Zeit:

mfg gfjs

Almond 13. Jan 2006 04:00

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.

MPirnstill 13. Jan 2006 07:15

Re: Hochzählen und dabei gleichzeitig anzeigen
 
Zitat:

Zitat von Almond
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.


Hi Almond!

Dazu mußt du den Label einfach nach dem hochzählen neu zeichnen damit die geänderte Zahl jedes angezeigt wird.

Delphi-Quellcode:
   myLabel.Invalidate;
So müßte es gehen.

Gruß

Almond 13. Jan 2006 09:45

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.

tobster 13. Jan 2006 09:56

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.

Schaedel 13. Jan 2006 09:56

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

Sascha_OW 13. Jan 2006 10:12

Re: Hochzählen und dabei gleichzeitig anzeigen
 
Zitat:


1sek / 6 ^= 167 ms
timer auf bei Interval auf 167 stellen.

Im Timer:

Delphi-Quellcode:
  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;
ich denke zwar nicht das die lösung gerade profi mäßig ist aber so sollte es auch gehen

Schaedel 13. Jan 2006 10:23

Re: Hochzählen und dabei gleichzeitig anzeigen
 
Delphi-Quellcode:
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;
Ich stelle mir das anders vor ... das funktioniert glaube ich auch nicht richtig ...
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 13:54 Uhr.
Seite 1 von 2  1 2      

Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz