<?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[Timer-Problem]]></title><description><![CDATA[<p>Hallo,</p>
<p>Auf dem Form liegt ein Button und ein Timer. Wenn man den Button anklickt, dann soll nach 5. Sekunden ein ShowMessage-Aufruf (&quot;1. ShowMessage() - 1. Aktion&quot;) kommen. Nach weiteren 5 + 1 Sekunden ein ShowMessage-Aufruf (&quot;2. ShowMessage() - 2. Aktion&quot;) und nach einer weiteren Sekunde der dritte Aufruf (&quot;3. ShowMessage() - 3. Aktion&quot;).</p>
<p>Allerdings kommt erst die 3. Message, dann nach ein paar Sekunden die 2. und die erste fällt komplett aus. Was ist falsch? <img
      src="https://www.c-plusplus.net/forum/plugins/nodebb-plugin-emoji/emoji/emoji-one/1f61e.png?v=ab1pehoraso"
      class="not-responsive emoji emoji-emoji-one emoji--disappointed_face"
      title=":("
      alt="😞"
    /></p>
<pre><code class="language-cpp">//---------------------------------------------------------------------------

#include &lt;vcl.h&gt;
#pragma hdrstop

#include &quot;Unit1.h&quot;
//---------------------------------------------------------------------------
#pragma package(smart_init)
#pragma resource &quot;*.dfm&quot;
TForm1 *Form1;
unsigned int timerAction;
//---------------------------------------------------------------------------
__fastcall TForm1::TForm1(TComponent* Owner)
        : TForm(Owner)
{
}
//---------------------------------------------------------------------------

void __fastcall TForm1::Button1Click(TObject *Sender)
{
        timer-&gt;Interval = 5000;
        timerAction = 0;
        timer-&gt;Enabled = true;

        timer-&gt;Interval = 5000;
        timerAction = 1;
        timer-&gt;Enabled = true;

        ShowMessage ( &quot;3. ShowMessage() - 3. Aktion&quot; );
}
//---------------------------------------------------------------------------

void __fastcall TForm1::timerTimer(TObject *Sender)
{
        switch ( timerAction )
        {
                case 0:
                        ShowMessage ( &quot;1. ShowMessage() - 1. Aktion&quot; );
                case 1:
                        ShowMessage ( &quot;2. ShowMessage() - 2. Aktion&quot; );
        }
        timer-&gt;Enabled = false;
}
//---------------------------------------------------------------------------
</code></pre>
]]></description><link>https://www.c-plusplus.net/forum/topic/180158/timer-problem</link><generator>RSS for Node</generator><lastBuildDate>Sat, 15 Aug 2026 13:48:12 GMT</lastBuildDate><atom:link href="https://www.c-plusplus.net/forum/topic/180158.rss" rel="self" type="application/rss+xml"/><pubDate>Sun, 29 Apr 2007 15:51:54 GMT</pubDate><ttl>60</ttl><item><title><![CDATA[Reply to Timer-Problem on Sun, 29 Apr 2007 15:51:54 GMT]]></title><description><![CDATA[<p>Hallo,</p>
<p>Auf dem Form liegt ein Button und ein Timer. Wenn man den Button anklickt, dann soll nach 5. Sekunden ein ShowMessage-Aufruf (&quot;1. ShowMessage() - 1. Aktion&quot;) kommen. Nach weiteren 5 + 1 Sekunden ein ShowMessage-Aufruf (&quot;2. ShowMessage() - 2. Aktion&quot;) und nach einer weiteren Sekunde der dritte Aufruf (&quot;3. ShowMessage() - 3. Aktion&quot;).</p>
<p>Allerdings kommt erst die 3. Message, dann nach ein paar Sekunden die 2. und die erste fällt komplett aus. Was ist falsch? <img
      src="https://www.c-plusplus.net/forum/plugins/nodebb-plugin-emoji/emoji/emoji-one/1f61e.png?v=ab1pehoraso"
      class="not-responsive emoji emoji-emoji-one emoji--disappointed_face"
      title=":("
      alt="😞"
    /></p>
<pre><code class="language-cpp">//---------------------------------------------------------------------------

#include &lt;vcl.h&gt;
#pragma hdrstop

#include &quot;Unit1.h&quot;
//---------------------------------------------------------------------------
#pragma package(smart_init)
#pragma resource &quot;*.dfm&quot;
TForm1 *Form1;
unsigned int timerAction;
//---------------------------------------------------------------------------
__fastcall TForm1::TForm1(TComponent* Owner)
        : TForm(Owner)
{
}
//---------------------------------------------------------------------------

void __fastcall TForm1::Button1Click(TObject *Sender)
{
        timer-&gt;Interval = 5000;
        timerAction = 0;
        timer-&gt;Enabled = true;

        timer-&gt;Interval = 5000;
        timerAction = 1;
        timer-&gt;Enabled = true;

        ShowMessage ( &quot;3. ShowMessage() - 3. Aktion&quot; );
}
//---------------------------------------------------------------------------

void __fastcall TForm1::timerTimer(TObject *Sender)
{
        switch ( timerAction )
        {
                case 0:
                        ShowMessage ( &quot;1. ShowMessage() - 1. Aktion&quot; );
                case 1:
                        ShowMessage ( &quot;2. ShowMessage() - 2. Aktion&quot; );
        }
        timer-&gt;Enabled = false;
}
//---------------------------------------------------------------------------
</code></pre>
]]></description><link>https://www.c-plusplus.net/forum/post/1275766</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1275766</guid><dc:creator><![CDATA[shareholder771]]></dc:creator><pubDate>Sun, 29 Apr 2007 15:51:54 GMT</pubDate></item><item><title><![CDATA[Reply to Timer-Problem on Sun, 29 Apr 2007 16:45:51 GMT]]></title><description><![CDATA[<p>Klassischer Fall für den Debugger <img
      src="https://www.c-plusplus.net/forum/plugins/nodebb-plugin-emoji/emoji/emoji-one/1f644.png?v=ab1pehoraso"
      class="not-responsive emoji emoji-emoji-one emoji--face_with_rolling_eyes"
      title=":rolling_eyes:"
      alt="🙄"
    /></p>
<p>Überleg doch mal, was Dein Programm macht:<br />
Bei Buttonclick wird das Intervall gesetzt, dann die Timervariable auf 0 gelegt und der Timer aktiviert. Das Prog läuft weiter, überschreibt die Timervariable auf den Wert von 1 und zeigt anschließend die dritte MessageBox. Dann vergehen fünf Sekunden und OnTimer wird aufgerufen - Anzeige der zweiten MessageBox.</p>
<p>unterm Strich: Dein Ansatz ist falsch. Nimm z.B. drei verschiedene Timer, oder was noch besser wäre, pack diese ganze Routine in das OnTimer-Ereignis.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1275791</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1275791</guid><dc:creator><![CDATA[Rostfrei**]]></dc:creator><pubDate>Sun, 29 Apr 2007 16:45:51 GMT</pubDate></item></channel></rss>