tutorials.de Buch-Aktion 05/2012
ERLEDIGT
JA
ANTWORTEN
2
ZUGRIFFE
861
EMPFEHLEN
  • An Twitter übertragen
  • An Facebook übertragen
AUF DIESES THEMA
ANTWORTEN
  1. #1
    Daniel1974 Daniel1974 ist offline Grünschnabel
    Registriert seit
    May 2007
    Beiträge
    2
    Hallo Zusammen,

    ich möchte eine VCL Anwendung Programmieren bei der Ich mit dem einen Button eine Schleife z.B. do...... while starte und diese dann mit einem Zweiten Button die Schleife unterbrechen kann. In der Schleife werden externe Daten von einen Gerät eingelesen und kontinuierlich in der Anwendung dargestellt. Klappt auch so weit. Jetzt wurde ich gerne mit den klicken auf den Zweiten Button die schleife abbrechen. Jetzt kömmt mein Problem die VCL Anwendung ist durch die Schleife blockiert.

    Ich denke mit einen Thread sollte es klappen, hab ich aber noch nie programmiert

    Was wären eure Lösungen für mein Problem

    Danke

    Daniel1974
     

  2. #2
    Registriert seit
    Mar 2004
    Beiträge
    441
    Meine klassische Lösung geht in die Richtung:
    Code :
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    
    bool bAborted = false;
     
    ...
     
    void __fastcall TForm1::Button1Click(TObject *Sender)
    {
        for(int i = 0; i < 100; i++)
        {
          // Mach irgendwas, z.B.
          Application->ProcessMessages(); // ist wichtig, damit der Klick auf den anderen
                                          // Button registriert werden kann.
          if(bAborted)
            break;
        }
    }
     
    void __fastcall TForm1::Button2Click(TObject *Sender)
    {
      bAborted = true;
    }
    Das Problem ist, während die for-Schleife läuft, kommt das Programm normalereise gar nicht dazu, den Klick auf den 2. Button zu verarbeiten. Genau das erzwingt aber Application->ProcessMessages(). Damit werden alle angestauten Windowsnachrichten (auch der Klick auf den 2. Button) abgearbeitet und der Klick kann wieder registriert werden.
     

  3. #3
    Daniel1974 Daniel1974 ist offline Grünschnabel
    Registriert seit
    May 2007
    Beiträge
    2
    Danke, Genau dieser Befehl hat mir gefehlt.

    Gruß

    Daniel1974
     

Ähnliche Themen

  1. TextEdit blockiert
    Von Quitschi im Forum Mac OS
    Antworten: 5
    Letzter Beitrag: 23.05.10, 22:10
  2. JSF Applikation innerhalb einer JSF Applikation
    Von Chefkoch333 im Forum Enterprise Java (JEE, J2EE, Spring & Co.)
    Antworten: 0
    Letzter Beitrag: 12.10.07, 13:21
  3. SocketInputStream blockiert
    Von jb007 im Forum Java
    Antworten: 4
    Letzter Beitrag: 11.05.07, 23:20
  4. PC blockiert netzwerk
    Von luke5 im Forum Netzwerke
    Antworten: 4
    Letzter Beitrag: 14.04.07, 18:02
  5. Windows blockiert
    Von mmdj im Forum Microsoft Windows
    Antworten: 3
    Letzter Beitrag: 30.07.04, 20:15