Hintergrundprozess



  • Hi
    Bastel gerade an einem kleinen Wirtschaftsspiel das auf Formularen basiert.Also komplett ohne grafische Elemente.
    Das Spiel soll Tage simulieren. Das heisst oben im Formular soll ein Label?!?! sein wo die Uhrzeit läuft. Natürlich viel schneller als real.
    Der Spieler soll aber wärend die Uhr oben läuft spielen können. Und je nach Uhrzeit sollen Ereignisse auftreten.

    Das zählen der Uhr müsste daher irgendwie im Hintergrund laufen.
    Wie kann ich sowas realisieren. Habe keine Ahnung, deswegen auch der blöde Titel 🙂
    Und wenns geht vielleicht ein bischen mehr als nur ein Stichwort, weil mit der Borland Hilfe kann ich gar nicht 🙂

    Danke



  • TThread
    TTimer

    -junix



  • hi
    Danke erstmal für den Tipp mit dem Thread und Timer
    Hat alles Funktioniert.
    Nur ein kleines Problem habe ich noch mit der Uhrzeit.
    Ich habe keine Ahnung wie ich die Uhrzeit schnell hochzählen lassen kann.

    Ideal wäre wenn, die Zeit z.B. um 9.00 Uhr anfängt und jede reale Sekunde eine Spielminute wäre.
    Wie geht man an sowas ran.
    Hat einer vielleicht sogar Beispielcode ?!??!

    DANKE



  • Ich sollte vielleicht noch meinen aktuellen Stand zeigen.

    Ich habe in meiner Datei Unit1.cpp von Formular1 meinen Thread erstellt

    zeit *uhr = new zeit(true);
    __fastcall TForm1::TForm1(TComponent* Owner)
            : TForm(Owner)
    { //Mit dem Befehl starte ich ihn doch oder ?? 
      uhr->Resume();
      ....
    }
    

    in meiner Thread Datei Unit3.cpp sieht so aus

    #include <vcl.h>
    #pragma hdrstop
    #include "Unit3.h"
    #include "Unit1.h"
    #pragma package(smart_init)
    
    __fastcall zeit::zeit(bool CreateSuspended)
            : TThread(CreateSuspended)
    {
    }
    //---------------------------------------------------------------------------
    void __fastcall zeit::Execute()
    {  TDateTime time = StrToTime("09:00:00");
      for (time; time < StrToTime("23:59:00"); time++)
      {
         Form1->Label7->Caption = TimeToStr(time);
      }
    }
    

    In der for Schleife sollte die Uhrzeit hochgezählt werden.
    Wird es aber nicht. Ich glaube das liegt daran, dass ich die TDateTime time Variable direkt dort deklariere.
    Das dumme ist nur, wo soll ich sie sonst deklarieren ?!??!


Anmelden zum Antworten