Sleep funktion



  • hi,
    ich such jetzt schon ne halbe ewigkeit bei google und doch find ich keine passenden ergebnisse.
    ich habe einen code. z.b.:

    if (textBox1->Text=="A")
    {
    textBox1->Text="T";
    }
    else if (textBox1->Text=="B")
    {
    textBox1->Text="V";
    }
    //----------------------
    if (textBox2->Text=="A")
    {
    textBox2->Text="T";
    }
    else if (textBox2->Text=="B")
    {
    textBox2->Text="B";
    }
    

    da wo sich " //-----------" im Moment befindet soll eine Zeile für eine Unterbrechung stehen. Also, dass das Programm für 2 Sekunden stoppt und dann mit dem darunterstehenden code (hier:)

    if (textBox2->Text=="A")
    {
    textBox2->Text="T";
    }
    else if (textBox2->Text=="B")
    {
    textBox2->Text="B";
    }
    

    fortfährt.

    Ich habe bei google etwas über eine sleep funktion gelesen. weiß aber nicht wie man die richtig anwendet.

    benutze windows vista + borland c++ builder 1.
    danke schonmal im voraus!

    MfG
    drummi

    P.S.: Sorry, falsches Forum. Kann mich mal einer verschieben?



  • Die Funktion heißt Sleep - nicht sleep - und braucht als Argument die Zeit in ms, die pausiert werden soll.

    Sleep(1000);  //wartet 1000ms = 1s
    


  • Wenn schon in C++/CLI:
    System::Threading::Thread::Sleep(1000);



  • Er nutzt ja den Builder...



  • _matze schrieb:

    Er nutzt ja den Builder...

    Aber die die Sprache ist ja doch C++/CLI ➡ .NET ➡ also auch das Sleep aus .NET.



  • theta schrieb:

    _matze schrieb:

    Er nutzt ja den Builder...

    Aber die die Sprache ist ja doch C++/CLI ➡ .NET ➡ also auch das Sleep aus .NET.

    Bin davon ausgegangen, dass das nicht der Fall ist, da er gesagt hat, er sei im falschen Forum. Na ja, ist ja eigentlich auch egal... 🙂



  • Dieser Thread wurde von Moderator/in Jochen Kalmbach aus dem Forum C++/CLI mit .NET in das Forum VCL (C++ Builder) verschoben.

    Im Zweifelsfall bitte auch folgende Hinweise beachten:
    C/C++ Forum :: FAQ - Sonstiges :: Wohin mit meiner Frage?

    Dieses Posting wurde automatisch erzeugt.



  • Hallo,

    nichts für ungut, aber:

    drummi schrieb:

    [...]
    benutze windows vista + borland c++ builder 1.
    [...]

    Das ist ja wie "Star Trek - Treffen der Generationen" 🤡

    Was wird es denn, wenn es fertig ist, was du da machst (dein Programm)?

    MfG



  • Kolumbus schrieb:

    drummi schrieb:

    [...]
    benutze windows vista + borland c++ builder 1.
    [...]

    Das ist ja wie "Star Trek - Treffen der Generationen" 🤡

    😃

    Der war wirklich gut!



  • Kolumbus schrieb:

    Hallo,

    nichts für ungut, aber:

    drummi schrieb:

    [...]
    benutze windows vista + borland c++ builder 1.
    [...]

    Das ist ja wie "Star Trek - Treffen der Generationen" 🤡

    Was wird es denn, wenn es fertig ist, was du da machst (dein Programm)?

    MfG

    ha ha ha. sehr lustig 😉

    es soll einfach dazu dienen, dass nachdem ein teil des codes ausgeführt wurde, der andere Teil erst nach 3 sekunden pause ausgeführt wird. (also das ist nicht sinn des programms!)



  • _matze schrieb:

    theta schrieb:

    _matze schrieb:

    Er nutzt ja den Builder...

    Aber die die Sprache ist ja doch C++/CLI ➡ .NET ➡ also auch das Sleep aus .NET.

    Bin davon ausgegangen, dass das nicht der Fall ist, da er gesagt hat, er sei im falschen Forum. Na ja, ist ja eigentlich auch egal... 🙂

    du hast eig schon recht _matze.

    leider führt er sleep zu erst aus bevor er das andere macht. ich hab es jetzt an einem ganz einfachen beispiel ausprobiert:

    Button2->Show();
    Sleep(3000);
    Button3->Show();
    

    Leider macht er erst sleep und dann zeigt er beide buttons an.
    kann man das verhindern, also dass erst button2, und nach 3 sekunden dann button3 angezeigt wird?



  • Das liegt an der MessageQueue, die wird sequenziell abgearbeitet. Du reagierst vermutlich auf irgendein GUI Ereignis (zB Button geklickt) und im Ereignishandler führst du dann deinen Code aus. Dieser Code macht eigentlich nichts weiteres, als Nachrichten in die Windows Message Queue einzfügen.
    Nehmen wir mal an, dein Code sei die erste Nachricht in der Queue, die Nachricht wird aus der Queue entfernt und behandelt. Die nächste Nachricht kann aber erst dann behandelt werden, wenn die Behandlung der ersten abgeschlossen ist. Die Nachrichten, die die Buttons sichtbar machen, werden also erst nach Verlassen deiner Methode behandelt, und da sich der Sleep Aufruf in deiner Methode befindet wird er auch VOR den Nachrichten für die Buttons aufgerufen.



  • Hallo

    Um das auf einfachste Art zum Laufen zu bekommen must du eben nur erzwingen das alle Messages gleich nach dem Sleep abgearbeitet werden.

    Button2->Show();
    Sleep(3000);
    Application->ProcessMessages(); // Messages sofort abarbeitem
    Button3->Show();
    

    Unter Umständen wäre allerdings ein TTimer besser, denn das sleep läßt deine gesamte Anwendung einfrieren.

    bis bald
    akari



  • ah ok, danke schonmal für die info. kann man das dann irgentwie anders regeln, dass es nicht so auftritt wie hier erwähnt?

    Edit: zu langsam. @ akari probiere ich mal aus.

    danke akari funktioniert (musste es natürlich das ProcessMessages vor sleep setzen!). ich probiere es dann nochmal mit nem timer. was mir dann besser gefält nehme ich.

    Also, danke euch allen für die große Hilfe!
    👍 🙂 🕶



  • Hallo

    Ich weiße auf meinen Post hin, falls du den durch unser gleichzeitiges antworten übersehen hast.

    bis bald
    akari



  • ich hab ihn gesehen, deswegen hab ich meinen beitrag oben ja nochmal editiert!

    dnake nochmal.

    EDIT: schon wieder gleichzeitig geantwortet! 😃



  • Ich persönlich halte ProcessMessages() für nen wilden Hack, den man so weit wie möglich vermeiden sollte. Du kannst direkt die Win32 API benutzen und mit SendMessage bzw. ShowWindow die Buttons anzeigen/verbergen:

    // Button verbergen
    ::ShowWindow( Button2->Handle, SW_HIDE );
    
    Sleep( 1000 );
    
    // Button wieder anzeigen
    ::ShowWindow( Button3->Handle, SW_SHOW );
    


  • DocShoe schrieb:

    Ich persönlich halte ProcessMessages() für nen wilden Hack, den man so weit wie möglich vermeiden sollte.

    +1.



  • drummi schrieb:

    Kolumbus schrieb:

    Was wird es denn, wenn es fertig ist, was du da machst (dein Programm)?

    es soll einfach dazu dienen, dass nachdem ein teil des codes ausgeführt wurde, der andere Teil erst nach 3 sekunden pause ausgeführt wird. (also das ist nicht sinn des programms!)

    Wenn du nicht drüber reden möchtest, auch Ok. 😉



  • wenn du es genau wissen möchtest ein einfaches verschlüsselungsprogramm. 😋


Anmelden zum Antworten