Einzelnen Beitrag anzeigen
  #5 (permalink)  
Alt 08.06.20
LQK LQK ist offline
Mitglied
 
Registriert seit: Nov 2019
Beiträge: 76
LQK befindet sich auf einem aufstrebenden Ast
Standard

Zitat:
Zitat von Ca$hDigger Beitrag anzeigen
Stecke einfach eine Endlosschleife in zB ein Skript, dieses kann immer ausgeführt werden

Code:
while(1)
{
   Sleep(1000); // Trigger jede Sekunde

   // hier der zu triggernde code

}

Danke für diesen Codeschnipsel. Die Programmieridee dahinter ist mir noch nicht ganz klar geworden. Die Endlos-Schleife führt dazu, dass der Schleifenrumpf immer und immer wieder ausgeführt wird, klar.

Aber warum sollte daraus ein Ereignis New Tick entstehen?


---

Habe jetzt mal die von Dir vorgeschlagene Endlos-Schleife getestet. Bislang noch nicht zum echten Debuggen, sondern nur probeweise.

Bislang ist es mir offenbar noch nicht gelungen, die Schleife zum Laufen zu bringen. Hab zuerst eine Funktion Test() welche mit Print(TimeLocal()) die aktuelle Uhrzeit ausgeben soll in den Schleifenrumpf geschrieben und dann von OnInit() aus die Funktion Test() aufgerufen.

Das hat nicht funktioniert, und nach einigem Ausprobieren, ist mir auch der Grund klargeworden, warum es nicht funktioniert: Wenn ich Test() von OnInit() aus aufrufe, wird deswegen ja noch lange nicht die While-Schleife aufgerufen.

Das hat mich auf die Idee gebraucht, dass ich eine Art Rahmenfunktion() brauche, welche die While-Schleife umschließt. Test() bzw. die Funktion die iteriert werden soll, sollte dann im Schleifenrumpf der While-Schleife stehen.

Habe das so umgesetzt und es ergibt sich der unten stehende Code.
Passiert ist aber nach Kompilieren und Ausführen dieses Codes tatsächlich gar nichts. Es wurde keine Uhrzeit ausgegeben, aber auch keine Fehlermeldung.

Hier der Code:

Code:
void OnInit() 
   {
   
     rahmenfunktion()
   
   }


void rahmenfunktion() 
   {
  
      while(1)
         {
            Sleep(1000); // Trigger jede Sekunde
            
            void test() 
               {
                  Print(TimeLocal());
               }
         }            
   }

Um sicherzugehen habe ich dann noch Print(TimeLocal()); durch Print("Test"); ersetzt. Den sich daraus ergebenden Code poste ich unten stehend, Änderung rot markiert. Allerdings hat die Änderung nichts bewirkt, weder kommt eine Fehlermeldung, noch eine Ausgabe.

Hier der Code:
Code:

void OnInit() 
   {
   
     rahmenfunktion()
   
   }


void rahmenfunktion() 
   {
  
      while(1)
         {
            Sleep(1000); // Trigger jede Sekunde
            
            void test() 
               {
                  Print("TEST");
               }
         }            
   }

Es ist mir somit letzten Endes nicht klar, was ich falsch mache. Habe ich die Idee mit der Schleife konzeptionell falsch umgesetzt, z.B. dasss die Idee mit der rahmenfunktion() nichts taugt, oder etwas in der Art?

Oder ist meine Idee der konzeptionellen Umsetzung richtig, und ich habe nur irgendwo Programmierfehler gemacht?

---

Würde mich über einen Hinweis freuen!


Beste Grüße,
LQK