Winbinder - Problem mit sleep Funktion...

Einklappen
X
 
  • Filter
  • Zeit
  • Anzeigen
Alles löschen
neue Beiträge

  • Winbinder - Problem mit sleep Funktion...

    Joa Servus zusammen,

    habe nun schon einige Tage damit verbracht mit Winbinder (was bekanntlich in PHP eingebettet werden kann) ein Programm mit der sleep Funktion zu schreiben und es kommt immer "keine Rückmeldung" also das Programm friert ein...

    Nun ich habe ewig gegoogelt aber nur gefunden, dass man die wb_create_timer() Funktion nutzen kann... (wb_create_timer)

    Okay dann bin ich her gegangen und habe versucht eine globale Variable in die Hauptschleife einzubauen und dann in einer Schleife mit der Bedingung "true" abzufragen ob der Timer bereits neu ist - also ugf. so:

    PHP-Code:
    ...

    global 
    $warten;
        
        switch(
    $id) {
            
            case 
    ID_APP_TIMER:
                
    $warten true;
                break;

    }
    ... 
    Und dazu die Schleife in der "main" Funktion:

    PHP-Code:
    ...
    while(
    true) {
                        
    if(
    $warten == true) {

    //Code ausführen..

    $warten false;

    break;

    }

    }

    ... 
    So nun wäre es nett von euch, wenn ihr mir evtl. helfen könntet -> bin etwas am Ende mit meinem Latein... oder ich hab nen Denkfehler gemacht
    Zuletzt geändert von ibor; 05.02.2015, 14:29.
    Immer eine Handbreit Puffer unterm Code

  • #2
    Ich vermute, dass $warten in der main-Funktion nicht als global definiert worden ist.

    Peter

    PS: lass die Finger von global. Das ist Horror.
    Nukular, das Wort ist N-u-k-u-l-a-r (Homer Simpson)
    Meine Seite

    Kommentar


    • #3
      Hi Peter,

      sorry habe nicht alles gepostet, die $warten is in der main als global vorhanden....
      Doch ich komme gerade sehr nah ran. Die Lösung werde ich hier posten - danke!



      ps: ich weiss um die Problematik mit dem global statement... Habe mich an die Programmbeispielen von wb gehalten...

      Ach übrigens danke für Deine Hilfe - das Buch verkauft sich gut
      Immer eine Handbreit Puffer unterm Code

      Kommentar


      • #4
        Zitat von ibor Beitrag anzeigen
        Joa Servus zusammen,

        habe nun schon einige Tage damit verbracht mit Winbinder (was bekanntlich in PHP eingebettet werden kann) ein Programm mit der sleep Funktion zu schreiben und es kommt immer "keine Rückmeldung" also das Programm friert ein...

        Nun ich habe ewig gegoogelt aber nur gefunden, dass man die wb_create_timer() Funktion nutzen kann... (wb_create_timer)

        Okay dann bin ich her gegangen und habe versucht eine globale Variable in die Hauptschleife einzubauen und dann in einer Schleife mit der Bedingung "true" abzufragen ob der Timer bereits neu ist - also ugf. so:

        PHP-Code:
        ...

        global 
        $warten;
            
            switch(
        $id) {
                
                case 
        ID_APP_TIMER:
                    
        $warten true;
                    break;

        }
        ... 
        Und dazu die Schleife in der "main" Funktion:

        PHP-Code:
        ...
        while(
        true) {
                            
        if(
        $warten == true) {

        //Code ausführen..

        $warten false;

        break;

        }

        }

        ... 
        So nun wäre es nett von euch, wenn ihr mir evtl. helfen könntet -> bin etwas am Ende mit meinem Latein... oder ich hab nen Denkfehler gemacht
        Ja, letzteres. Du versuchst, die Timer-Funktionalität als sleep()-Ersatz zu missbrauchen. Das funktioniert so nicht. Das von dir verlinkte Code-Beispiel macht es richtig:

        PHP-Code:
        // A very simple digital clock

        define("ID_APP_TIMER",  201);

        $mainwin wb_create_window(NULLPopupWindowdate("h:i:s A"), 1200);
        wb_set_handler($mainwin"process_main");
        wb_create_timer($mainwinID_APP_TIMER1000);     // One second interval
        wb_main_loop();

        function 
        process_main($window$id)
        {
           switch(
        $id) {
               case 
        ID_APP_TIMER:
                   
        // Show the current time in hours, minutes and seconds
                   
        wb_set_text($windowdate("h:i:s A"));
                   break;

               case 
        IDCLOSE:
                   
        wb_destroy_window($window);
                   break;
            }

        Falls du schon mal mit JavaScript (im Webbrowser) gearbeitet hast: Dort gibts mit window.setInterval() eine ähnliche Funktion. Du übergibst dem Window-Handler eine benutzerdefinierte Funktion, die vom Timer regelmäßig aufgerufen wird. In dieser Funktion kannst du dann auf die Ereignisse reagieren, die ihr per $id mitgeteilt wurden.
        Klingon function calls do not have “parameters”‒they have “arguments”‒and they always win them!

        Kommentar


        • #5
          Ja diese Funktion ist mir durchaus bekannt aber dies habe ich ja schon probiert auserdem ist es gleich ob ich die var direkt setze oder in einer funktion. Es handelt sich um php! Habe nun auch einfach mit timestamps gearbeitet somit weiss ich nun genau wann das timeout gesetzt wurde und wann der timestamp gelesen wurde! Und dann eben differenz ausrechnen und schauen ob neu...

          Aber trotzdem Thx!

          Greetz Robert
          Zuletzt geändert von ibor; 06.02.2015, 19:31.
          Immer eine Handbreit Puffer unterm Code

          Kommentar


          • #6
            Sorry lag nicht am sleep befehl sondern an einer Schleife im Script
            habe die Lösung bereits gefunden. Danke euch trotzdem.

            Gruß Robert
            Immer eine Handbreit Puffer unterm Code

            Kommentar

            Lädt...
            X