Entwickler-Ecke

Delphi Language (Object-Pascal) / CLX - Zeitmessung und -anzeige für Projekt


Swagger Jackin - So 21.02.10 17:54
Titel: Zeitmessung und -anzeige für Projekt
Im Projekt versuche ich zwischen Start und Ende die Zeit zu messen und anzuzeigen.
Ich erhalte bei jedem neuem Spielstart durch klicken NeuesSpiel im Menü immer dieselbe Zeit und ich will es neben Label anzeigen, jedoch wird das Label erstezt durch die Zeit


Magic J - So 21.02.10 18:07

Hi,
Zitat:
Ich erhalte bei jedem neuem Spielstart durch klicken NeuesSpiel im Menü immer dieselbe Zeit

naja deine Variable 'start' wird nie beschrieben!
Ich denkmal darin sollte die Startezeit am Anfang abgespeichert werden

Zitat:
und ich will es neben Label anzeigen, jedoch wird das Label erstezt durch die Zeit

wenn deine Label vorher schon ein Caption hat wird das natürlich überschrieben.
willst du einen Text davor musst du ihn schon nochmal hinzufügen:


Delphi-Quelltext
1:
Label2.Caption := 'Zeit: ' + FormatDatetime('ss', runtime);                    


Gruß,


Swagger Jackin - So 21.02.10 18:28

naja deine Variable 'start' wird nie beschrieben!
Ich denkmal darin sollte die Startezeit am Anfang abgespeichert werden

ich dachte: start:=now; reicht aus
Was muss ich ändern, weiß auch nichts anderes


Niko S. - So 21.02.10 18:33

Also es geht beispielsweise so

Delphi-Quelltext
1:
2:
3:
4:
5:
6:
var
  StartTime: Int64;
begin
  StartTime := GetTickCount;
  { Do Some Code }
  Label1.caption := Format('Der Vorgang dauerte: %f s',[(GetTickCount-StartTime) / 1000]);

Ich hoffe ich hab da jetzt keine Fehler reingebracht.
GetTickCount ist nicht unbedingt super genau.


bole - So 21.02.10 18:34

Die Variable start in Unit1 initialisierst merkt die Variable start in Unit13 nichts...

Das sind zwei verschiedene Variabeln.


Magic J - So 21.02.10 18:44

Zitat:
Die Variable start in Unit1 initialisierst merkt die Variable start in Unit13 nichts...

Genau.

Deshalb solltest du 'start' aus Unit1 entfernen und sie dafür (zB.) in Unit13 als public definieren


Delphi-Quelltext
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
//...
  private   
   { Private-Deklarationen }
  public
    start: TDatetime;
  end;

var  Form13: TForm13;
     runtime  : TDatetime;
     i        : integer;
//...


Gruß,


Swagger Jackin - So 21.02.10 20:20

habe es umgeändert trotzdem dieselbe Zeit, hat sich leider nichts geändert


Magic J - So 21.02.10 21:32

Du hast also die Variable in Unit1 gelöscht und den dortigen Aufruf angepasst?

Delphi-Quelltext
1:
Form13.start := now;                    


Wenn ja, dann muss du wohl noch deinen Zeitberechnung in der Unit13 in 'OnShow' und nicht in 'OnCreate' ausführen...
OnCreate wird nur einamlig beim Erstellen(nicht Anzeigen) des Forms ausgeführt!

Gruß,


Swagger Jackin - So 21.02.10 22:03

Endlich läuft es richtig
Magic J: dein Vorschlag war das Letzte was noch gefehlt hatte
Danke für alle Antworten!