Prozesszeit



  • habe einen Prozess der mit start/stop gesteuert werden kann. Nun möchte ich die Prozesszeit in einem label anzeigen. Hab zwar schon einen Timer geschrieben als Thread wo der QPC ausgelesen wird:

    AnsiString TProzesszeit::CPUZeitToTime()
    {
    
      TDateTime time = prozesszeit/86400.0;
      return time.FormatString("hh:nn:ss");
    }
    

    Das wollt ich einfacher gestalten. Hab dazu in meiner Form einfach eine TDateTime Variable als private mit der Bezeichnung prozesszeit deklariert und in der cpp mit 0 initialisiert. Nun möchte ich das er bei 00.00.00 anfängt zu zählen (Stunden.Minuten.Sekunden). Wie setz ich das am besten um?



  • Ich habe mal folgende Funktion geschrieben. Damit kannst du die aktuelle Zeit in Sekunden speichern:

    void TForm1::Systemzeit_in_Sekunden_ermitteln(double & systemzeit_in_Sekunden)
    {
      // Deklaration lokaler Variablen:
      // ==============================
      unsigned short int_stunden	= 0;
      unsigned short int_minuten  	= 0;
      unsigned short int_sekunden	= 0;
      unsigned short int_msekunden	= 0;
    
      double db_stunden	= 0;
      double db_minuten  	= 0;
      double db_sekunden	= 0;
    
      // Aktuelle Systemzeit ermitteln und in lokalen variablen speichern:
      // =================================================================
      TDateTime DateTimePicker1 = TDateTime::CurrentDateTime();
      DateTimePicker1.DecodeTime(&int_stunden,&int_minuten,&int_sekunden,&int_msekunden);
    
      db_stunden	= int_stunden;
      db_minuten  	= int_minuten;
      db_sekunden	= int_sekunden;
    
      // Systemzeit in Sekunden berechnen:
      systemzeit_in_Sekunden = (db_stunden * 3600) + (db_minuten *60) + (db_sekunden);
    }
    

    Dann würde ich zwei globale Variable anlegen und mit meiner Funktion die Zeit in Sekunden zu Beginn deines Prozesses und am Ende des Prozesses speichern. Dann die Differenz berechnen und das Ergebnis von Sekunden nach hh🇲🇲ss umrechnen.
    Es ist nicht unbedingt einfacher als dein Ansatz. Nur so als Alternative.



  • die Prozesszeit soll fortlaufend auf der Form in einem Label angezeigt werden. So kann der Benutzer sehen wie lange der Prozess schon läuft. Das ganze soll über einen TTimer laufen, der alle 1 sek. den aktuellen Fortschritt anzeigt



  • Der Begriff "Prozesszeit" ist mehrdeutig, meinst du damit die Zeit, die der Prozess läuft (also Differenz von Jetzt und Startzeit) oder die CPU Zeit, die der Prozess bisher verbraucht hat?



  • mit Prozesszeit meine ich die Zeit, seid dem das Programm zu einem festgelegten Startzeitpunkt läuft (als Differenz Startzeit und Momentanzeit). Ich hab je einen Start- und Stopbutton. Diese steuern auch einen Timer. Der sollte dann auch die Prozesszeit auf ein label ausgeben


Anmelden zum Antworten