Hilfe !! komme nicht weiter...



  • Hallo,
    ich versuche momentan (so seit zwei wochen :D) eine binär uhr in visual c++/cli zu schreiben, aber irgendwie klappt das nicht so ganz..

    also die grundfunktionen stehen und funktionnieren..
    ich starte die uhr aber auf knopfdruckm damit sie immer die aktuelle zeit angibt dachte ich mir das ich die funktion in eine endlos schleife baue und am eine ein ..

    _sleep(1000);
    

    .. mach aber da gibts immer eine fehlermeldung das programm würde nicht reagieren...

    nun wurde mir gesagt ich sole doch einen timer benutzen aber ich weiß nicht was das ist und auch nicht wie so ein timer funktionieren soll....

    ich hoffe mir kann hier jemand helfen ! 🙂



  • Wenn Du WinForms verwendest, dann solltest Du einen Timer verwenden!
    (einfach in die Form aus der Toolbox reinziehen).

    Und als Anmerkung:
    http://blog.kalmbach-software.de/de/2010/03/05/ccli-und-winforms-macht-keinen-sinn/



  • Ja oke..
    ich habe hier nun einen Timer, habe einen intervall festgelegt und enable auf true gesetzt.

    soll ich diesen denn nun als eine art pause benutzen oder wie?
    weil ..

    this->timer1->Start(){
        // hier der code
    }
    

    geht leider nicht -.-

    und...

    ..{
        // hier der code
        this->timer1->Start();          // nun is der timer als pause da
    }
    

    geht auch nicht 😞



  • soll ich diesen denn nun als eine art pause benutzen oder wie?

    Ähm nein. Falsche Denkweise. Für eine "Pause"methode könntest (aber nicht solltest ⚠ ) du System::Threading::Thread::Sleep nehmen.

    Das Timer-Control sorgt dafür, dass das Tick-Event nach dem entsprechenden Intervall aufgerufen wird. z.B.: für jede Sekunde (Interval = 1000). Du musst also eine Methode mit deinem Code dem Tick-Handler hinzufügen.



  • Ja geil ich habs endlich xD
    danke ^^



  • Hab mal wieder ein Problem xD

    Wieso hängt meine Anwendung sich bei dieser einfache Schleife auf?

    unsigned int num[10000];
    for(int i = 0;i <= 10000;i++)
        num[i] = i;
    

    Bei dieser aber nicht ..

    int res = 0;
    int fib = 3, fibF = 1, fibS = 2;
    while(fib < 4000000){
          fibF = fibS;
          fibS = fib;
          fib = fibF + fibS;
          if(fib % 2 == 0)
          res += fib;
    }
    

    Ich weiß das zu lange Schleifen irgendwie den Thread der Form selbst blockiert... Wieso funktioniert dann aber die erste Schleife die doch viel länger ist?



  • WildChild schrieb:

    unsigned int num[10000];
    for(int i = 0;i <= 10000;i++)
        num[i] = i;
    

    Wenn das wirklich so dasteht versuchst du über Arraygrenzen hinweg zu schreiben.
    Dein Array ist 10000 elemente lang (0-9999). Du zählst aber von 0 - 10000 was 10001 Elemente adressiert.



  • Ja ok 😃
    Einfachster Fehler seit Ewigkeiten .. Ist mir schon ewig nicht mehr passiert. 🙄

    Ja trotzdem danke ^^



  • Man nennt das Betriebsblindheit, wird wohl demnächst nicht mehr so oft passieren aber ggf irgendwann mal wieder 😉


Anmelden zum Antworten