<?xml version="1.0" encoding="UTF-8"?><rss xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:content="http://purl.org/rss/1.0/modules/content/" xmlns:atom="http://www.w3.org/2005/Atom" version="2.0"><channel><title><![CDATA[polling betrieb?]]></title><description><![CDATA[<p>Hallo zusammen,</p>
<p>ich habe mal wieder eine Frage. Ich habe eine TCheckBox. Wenn ich die abhake, soll eine int var inkrementiert werden und im Memofenster angezeigt werden. Wenn ich, wärend des inkrementieren der var, nun erneut die TCheckBos abhake, soll das Inkrementieren stoppen.</p>
<p>Habe hier mal zwei Funktionen geschrieben.</p>
<pre><code>void __fastcall TForm1::CheckBox1Click(TObject *Sender)
{
int dMessOLD = 0;

dMessOLD = dMess;
dMess    = 1;

if(dMessOLD)
 dMess=0;
}

void Counter(TMemo *Memo1){

double reg = 0;
AnsiString Ausgabe;

while(dMess){
    reg++;
    Ausgabe += reg;
    Memo1-&gt;Clear();
    Memo1-&gt;Lines-&gt;Add(Ausgabe);
    };
}
</code></pre>
<p>Ich erkenne das Problem selbst. Wenn die TCheckBox abgehakt ist und Counter aufgerufen wird, geht die GUI in die while-schleife und verabschiedet sich. Ich müsste in so eine Art polling modus gehen. Aber wie mache ich das? Der Inhalt der while-schleife in Counter kann auch ein beliebiger sein, d.h. ich möchte nut weil die fkt counter heißt, keine couter-funktion programmieren.</p>
<p>Welche Klassen kommern für das Problem in Frage?</p>
<p>lg,<br />
blitzgeist</p>
]]></description><link>https://www.c-plusplus.net/forum/topic/177808/polling-betrieb</link><generator>RSS for Node</generator><lastBuildDate>Wed, 24 Jun 2026 04:26:23 GMT</lastBuildDate><atom:link href="https://www.c-plusplus.net/forum/topic/177808.rss" rel="self" type="application/rss+xml"/><pubDate>Wed, 04 Apr 2007 10:02:04 GMT</pubDate><ttl>60</ttl><item><title><![CDATA[Reply to polling betrieb? on Wed, 04 Apr 2007 10:02:04 GMT]]></title><description><![CDATA[<p>Hallo zusammen,</p>
<p>ich habe mal wieder eine Frage. Ich habe eine TCheckBox. Wenn ich die abhake, soll eine int var inkrementiert werden und im Memofenster angezeigt werden. Wenn ich, wärend des inkrementieren der var, nun erneut die TCheckBos abhake, soll das Inkrementieren stoppen.</p>
<p>Habe hier mal zwei Funktionen geschrieben.</p>
<pre><code>void __fastcall TForm1::CheckBox1Click(TObject *Sender)
{
int dMessOLD = 0;

dMessOLD = dMess;
dMess    = 1;

if(dMessOLD)
 dMess=0;
}

void Counter(TMemo *Memo1){

double reg = 0;
AnsiString Ausgabe;

while(dMess){
    reg++;
    Ausgabe += reg;
    Memo1-&gt;Clear();
    Memo1-&gt;Lines-&gt;Add(Ausgabe);
    };
}
</code></pre>
<p>Ich erkenne das Problem selbst. Wenn die TCheckBox abgehakt ist und Counter aufgerufen wird, geht die GUI in die while-schleife und verabschiedet sich. Ich müsste in so eine Art polling modus gehen. Aber wie mache ich das? Der Inhalt der while-schleife in Counter kann auch ein beliebiger sein, d.h. ich möchte nut weil die fkt counter heißt, keine couter-funktion programmieren.</p>
<p>Welche Klassen kommern für das Problem in Frage?</p>
<p>lg,<br />
blitzgeist</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1259106</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1259106</guid><dc:creator><![CDATA[blitzgeist]]></dc:creator><pubDate>Wed, 04 Apr 2007 10:02:04 GMT</pubDate></item><item><title><![CDATA[Reply to polling betrieb? on Wed, 04 Apr 2007 10:44:43 GMT]]></title><description><![CDATA[<p>Ja das kommt nun drauf an, was genau Du machen willst.</p>
<p>Wenn Du im Prinzip eine Schleife hast, die permanent (mit hoher Priorität) laufen soll, kannst Du irgendwo in der Schleife ein Application-&gt;ProcessMessages() einbauen. Dies sorgt dafür, dass die Nachrichtenwarteschlange des Programms weiter abgearbeitet wird und das Programm bleibt weiterhin bedienbar. Je nachdem aber nur sehr schleppend...</p>
<p>Alternativ kann ein TTimer verwendet werden, der dann z.B. jede Sekunde einmal die Funktion ausführt.</p>
<p>Für einen Counter wäre die Timer-Lösung die bessere, aber die willst du ja eigentlich nicht.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1259136</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1259136</guid><dc:creator><![CDATA[[[global:guest]]]]></dc:creator><pubDate>Wed, 04 Apr 2007 10:44:43 GMT</pubDate></item><item><title><![CDATA[Reply to polling betrieb? on Wed, 04 Apr 2007 11:21:35 GMT]]></title><description><![CDATA[<p>Hallo,</p>
<p>ich würde einfach noch ein boolean übergeben...</p>
<pre><code class="language-cpp">void __fastcall TForm1::CheckBox1Click(TObject *Sender)
{
if (CheckBox1-&gt;Checked)
        Counter(Memo1, true);
else
        Counter(Memo1, false);
}
//---------------------------------------------------------------------------
void __fastcall TForm1::Counter(TMemo *Memo1, bool active)
{
if (active)
{
    //machwas();
    //Application-&gt;ProcessMessages() nicht vergessen...
}
}
</code></pre>
<p>mfg, Micha</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1259161</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1259161</guid><dc:creator><![CDATA[[[global:guest]]]]></dc:creator><pubDate>Wed, 04 Apr 2007 11:21:35 GMT</pubDate></item><item><title><![CDATA[Reply to polling betrieb? on Wed, 04 Apr 2007 11:44:10 GMT]]></title><description><![CDATA[<p>Hi RandomAccess85,</p>
<p>über Application-&gt;ProcessMessages() wird somit gewährleistet, dass ich noch meine GUI bedienen kann und jetzt deine eingeführte bool var active wieder auf false setzten kann. Aber was ist mit der Aussage von Joe_M</p>
<blockquote>
<p>ProcessMessages() einbauen. Dies sorgt dafür, dass die Nachrichtenwarteschlange des Programms weiter abgearbeitet wird und das Programm bleibt weiterhin bedienbar. Je nachdem aber nur sehr schleppend...</p>
</blockquote>
<p>Geht das mittels eines Timers schneller, besser? Am besten mal beide Varianten ausprobieren...<br />
Oder wie seht ihr das?</p>
<p>lg,<br />
blitzgeist</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1259179</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1259179</guid><dc:creator><![CDATA[blitzgeist]]></dc:creator><pubDate>Wed, 04 Apr 2007 11:44:10 GMT</pubDate></item><item><title><![CDATA[Reply to polling betrieb? on Wed, 04 Apr 2007 11:48:23 GMT]]></title><description><![CDATA[<p>Hallo,</p>
<p>ja ich würd auch sagen, dass du an deine Routine angepasst einfach mal beide Varianten untersuchst und dann für dich entscheidest was schneller geht bzw. die bessere Performance liefert <img
      src="https://www.c-plusplus.net/forum/plugins/nodebb-plugin-emoji/emoji/emoji-one/1f609.png?v=ab1pehoraso"
      class="not-responsive emoji emoji-emoji-one emoji--winking_face"
      title=";)"
      alt="😉"
    /></p>
<p>mfg, Micha!</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1259187</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1259187</guid><dc:creator><![CDATA[[[global:guest]]]]></dc:creator><pubDate>Wed, 04 Apr 2007 11:48:23 GMT</pubDate></item><item><title><![CDATA[Reply to polling betrieb? on Wed, 04 Apr 2007 12:04:19 GMT]]></title><description><![CDATA[<p>Nun ja, es gäbe ja auch noch die Möglichkeit, das in einen eigenen Thread auszulagern...<br />
Es ist aber nicht möglich, Dir einen Weg zu empfehlen, so lange wir nicht wissen, was genau da passieren soll.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1259204</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1259204</guid><dc:creator><![CDATA[[[global:guest]]]]></dc:creator><pubDate>Wed, 04 Apr 2007 12:04:19 GMT</pubDate></item><item><title><![CDATA[Reply to polling betrieb? on Wed, 04 Apr 2007 12:04:51 GMT]]></title><description><![CDATA[<p>also habe das jetzt so</p>
<pre><code>void __fastcall TForm1::CheckBox1Click(TObject *Sender)
{
if(CheckBox1-&gt;Checked){
    dMess = 1;
    Counter(Memo1, dMess);
    }
else{
    dMess = 0;
    Counter(Memo1, dMess);
    }
}

double reg = 0;
void Counter(TMemo *Memo1, int dMess){

AnsiString Ausgabe;

while(dMess){
    reg++;
    Ausgabe += reg;
    Memo1-&gt;Clear();
    Memo1-&gt;Lines-&gt;Add(Ausgabe);
    Application-&gt;ProcessMessages();
    };
}
</code></pre>
<p>Sobald ich die CheckBox abhake, läft die ganze Sache los, kann auch meine GUI &quot;bedienen&quot;, d.h. ich hacke die CheckBox wieder ab, Häkchen verschwindet, aber im Memofenster rasseln als noch die Zahlen herunter. Ich dachte jetzt nach dem Abhaken würde auch das Zählen aufhören, weil die while schleife false ist. Dem ist aber nicht so. Wieso?</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1259206</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1259206</guid><dc:creator><![CDATA[blitzgeist]]></dc:creator><pubDate>Wed, 04 Apr 2007 12:04:51 GMT</pubDate></item><item><title><![CDATA[Reply to polling betrieb? on Wed, 04 Apr 2007 12:14:54 GMT]]></title><description><![CDATA[<p>Das liegt daran, dass Du in der Funktion Counter eine lokale Kopie der globalen Variable dMess übergibst. Diese lokale Kopie wird niemals 0, also stoppt die Schleife auch nie.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1259220</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1259220</guid><dc:creator><![CDATA[[[global:guest]]]]></dc:creator><pubDate>Wed, 04 Apr 2007 12:14:54 GMT</pubDate></item><item><title><![CDATA[Reply to polling betrieb? on Wed, 04 Apr 2007 12:18:15 GMT]]></title><description><![CDATA[<p>...also pointer</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1259225</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1259225</guid><dc:creator><![CDATA[blitzgeist]]></dc:creator><pubDate>Wed, 04 Apr 2007 12:18:15 GMT</pubDate></item><item><title><![CDATA[Reply to polling betrieb? on Wed, 04 Apr 2007 12:23:45 GMT]]></title><description><![CDATA[<p>Hä? Nö.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1259231</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1259231</guid><dc:creator><![CDATA[[[global:guest]]]]></dc:creator><pubDate>Wed, 04 Apr 2007 12:23:45 GMT</pubDate></item><item><title><![CDATA[Reply to polling betrieb? on Wed, 04 Apr 2007 12:24:33 GMT]]></title><description><![CDATA[<p>Dachte über nen pointer aud dMess könnte ich es lösen. Wieso nicht?</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1259232</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1259232</guid><dc:creator><![CDATA[blitzgeist]]></dc:creator><pubDate>Wed, 04 Apr 2007 12:24:33 GMT</pubDate></item><item><title><![CDATA[Reply to polling betrieb? on Wed, 04 Apr 2007 12:32:48 GMT]]></title><description><![CDATA[<p>ich habs nun... <img
      src="https://www.c-plusplus.net/forum/plugins/nodebb-plugin-emoji/emoji/emoji-one/1f642.png?v=ab1pehoraso"
      class="not-responsive emoji emoji-emoji-one emoji--slightly_smiling_face"
      title=":)"
      alt="🙂"
    /></p>
]]></description><link>https://www.c-plusplus.net/forum/post/1259235</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1259235</guid><dc:creator><![CDATA[blitzgeist]]></dc:creator><pubDate>Wed, 04 Apr 2007 12:32:48 GMT</pubDate></item><item><title><![CDATA[Reply to polling betrieb? on Wed, 04 Apr 2007 12:29:22 GMT]]></title><description><![CDATA[<p>Du hast eine globale Variable dMess. Aber in der Funktion Counter verwendest Du eine nur in dieser Funktion bekannte Variable gleichen Namens. Lass das dMess einfach komplett aus den Funktionsparametern raus. Und wenn Du Counter zu einer Memberfunktion von TForm1 machst, brauchst Du auch das Memo nicht zu übergeben.<br />
Und wenn Du dann noch alle globalen Variablen zu privaten Membervariablen des Forms machst, kommt langsam Land in Sicht... <img
      src="https://www.c-plusplus.net/forum/plugins/nodebb-plugin-emoji/emoji/emoji-one/1f609.png?v=ab1pehoraso"
      class="not-responsive emoji emoji-emoji-one emoji--winking_face"
      title=";)"
      alt="😉"
    /></p>
]]></description><link>https://www.c-plusplus.net/forum/post/1259241</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1259241</guid><dc:creator><![CDATA[[[global:guest]]]]></dc:creator><pubDate>Wed, 04 Apr 2007 12:29:22 GMT</pubDate></item><item><title><![CDATA[Reply to polling betrieb? on Wed, 04 Apr 2007 12:50:41 GMT]]></title><description><![CDATA[<p>Hallo Joe_M,</p>
<p>danke für deine Tipps. Eigendlich habe ich schon meine Funktion wie ich so gerne haben möchte mit ProcessMessages(). Nur eines verstehe ich noch nicht. Im Memofenster läuft schön meine Variable hoch und wenn ich die CheckBox wieder abhake bleibt sie stehen. Wärend des zählens kann ich auch alle anderen Funktionen bediene, nur nicht mein Butto beenden der die Funktion Close(); aufruft. Jedoch klicke ich auf den Button beenden wärend des Zählens und ich dann die CheckBox wieder abhake (also Haken weg), dann erst wird der Button beenden bedient und die GUI schließt sich.<br />
Die Priorität der Funktion Close() scheint sehr niedrig zu sein. Wie kann ich das ändern, dass mein Button beenden auch wärend des Zählens bedient wird und die GUI sich schließ?</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1259257</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1259257</guid><dc:creator><![CDATA[blitzgeist]]></dc:creator><pubDate>Wed, 04 Apr 2007 12:50:41 GMT</pubDate></item><item><title><![CDATA[Reply to polling betrieb? on Wed, 04 Apr 2007 13:16:32 GMT]]></title><description><![CDATA[<p>Hallo</p>
<p>Genau deshalb wurde dir zu TTimer/TThread geraten.</p>
<p>bis bald<br />
akari</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1259274</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1259274</guid><dc:creator><![CDATA[akari]]></dc:creator><pubDate>Wed, 04 Apr 2007 13:16:32 GMT</pubDate></item></channel></rss>