![]() |
Zeit messen & Programm abrechen
Sers Leute,
bin ein ziemlicher Anfänger und hab zwei Fragen an Euch: 1. Wie errechne ich die Zeit, die eine Prozedur für das Ausführen eines Codes braucht? Ich "programmiere" zur Zeit ein Programm, das mit Hilfe von Bubblesort, Zahlen sortiert. Ich möchte auf der Oberfläche meines Programms eine Art Stopuhr (die anzeigt wie Lange das Programm schon arbeitet) anzeigen. Wie stelle ich das an? Beispiele? 2. Ich möchte in mein Bubblesort einen Abbruchknopf einbauen. Wenn die Sortierung mit Bubblesort zu lange dauert, möchte ich, dass der Benutzer die Möglichkeit hat den Vorgang abzubrechen. Hab's schon versucht, aber sol lange das Progamm rechnet kann man bei mir keine Buttons klicken :| Wie stelle ich das an? Beispielcode? |
Re: Zeit messen & Programm abrechen
In die Schleife Application.Processmessages rein.
Das mit der Zeit wird schwierig - für dich, wenn du es richtig machen willst. Einfach und ungenau wird es mit GetTickCount. Die Forensuche sollte helfen. |
Re: Zeit messen & Programm abrechen
Ist es egal wo in der Schleife Application.Processmessages rein muss?
Was für Code muss bei so einem Abrruchbutton rein? |
Re: Zeit messen & Programm abrechen
Nimm eine bool'sche Variable (global) die du in der Schleife abfragst und mit einem Button entsprechend setzt.
|
Re: Zeit messen & Programm abrechen
Delphi-Quellcode:
Var Beenden: Boolean;
Procedure ...; Var Start: TDateTime; {Z: Byte;} Begin Beenden := False; Start := now; Repeat ... Label1.Caption := TimeToStr(Now - StartZeit); {Inc(Z);} {If Z mod 32 = 0 Then} Application.ProcessMessages; Until Beenden or (fertig); Label1.Caption := 'fertig / abgebrochen'; End; Procedure Form1.ButtonClick(Sender: TObject); Begin Beenden := True; End; Achtung: je häufiger ProcessMessages aufgerufen wird, desto länger baucht dein Programm. Notfalls einen Zähler einbauen und nur bei jedem X-ten Durchlauf aufrufen. Im Beispiel bieten sich Potenzen von 2 für X(32) an. |
Re: Zeit messen & Programm abrechen
Kuck dir doch mal im Demos/Threads Verzeichnis von Delphi das Programm Thrddemo an. Erklärt einerseits genau die Lösung zu deinem Problem mittels Threads und zeigt andererseits auch noch genau passend die Threads eingesetzt bei einem Sortierverfahrenvergleich.
Gruß, Tom |
Re: Zeit messen & Programm abrechen
Liste der Anhänge anzeigen (Anzahl: 1)
Hallo,
zur genauen Zeitmessung habe ich eine Unit von Peter J. Haas & Robert Rossmair auf meiner Platte herumliegen, leider finde ich den Link nicht mehr. (Lizenz der Unit ist MPL) |
Alle Zeitangaben in WEZ +1. Es ist jetzt 02:40 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 by Thomas Breitkreuz