<?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[Sekundengenaue Darstellung]]></title><description><![CDATA[<p>Hallo zusammen,</p>
<p>ich möchte gerne über ein Label eine bestimmte Anzahl an Sekunden herunterlaufen lassen und parallel dabei ein CGauge füllen.</p>
<p>Leider funktioniert dies nur bedingt. Die Darstellung ist nicht zu 100% sekundengenau. Gibt es eine bessere Lösung als diese:</p>
<pre><code class="language-cpp">void __fastcall TForm1::Button1Click(TObject *Sender)
{
 int rechenzeit    = 60;            //Sekunden
 CGauge1-&gt;MaxValue = rechenzeit*100;
 CGauge1-&gt;Visible  = true;

 for (int i = 1; i &lt;= rechenzeit*100; i++)
     {
      ::Sleep(10);
      Label4-&gt;Caption   = &quot;Berechnung abgeschlossen in &quot; + IntToStr(rechenzeit - i/100) + &quot; Sekunden.&quot;;
      CGauge1-&gt;Progress = i;
      Application-&gt;ProcessMessages();
     }
}
</code></pre>
<p>In Zeile 4 und 7, mal 100, damit bei kleinen Rechenzeiten nicht blockweise das CGauge gefüllt wird, sondern auch hier ein flüssiger Übergang zu erkennen ist.</p>
<p>LG<br />
Todd</p>
]]></description><link>https://www.c-plusplus.net/forum/topic/198155/sekundengenaue-darstellung</link><generator>RSS for Node</generator><lastBuildDate>Tue, 18 Aug 2026 16:48:59 GMT</lastBuildDate><atom:link href="https://www.c-plusplus.net/forum/topic/198155.rss" rel="self" type="application/rss+xml"/><pubDate>Mon, 19 Nov 2007 07:56:05 GMT</pubDate><ttl>60</ttl><item><title><![CDATA[Reply to Sekundengenaue Darstellung on Mon, 19 Nov 2007 08:03:08 GMT]]></title><description><![CDATA[<p>Hallo zusammen,</p>
<p>ich möchte gerne über ein Label eine bestimmte Anzahl an Sekunden herunterlaufen lassen und parallel dabei ein CGauge füllen.</p>
<p>Leider funktioniert dies nur bedingt. Die Darstellung ist nicht zu 100% sekundengenau. Gibt es eine bessere Lösung als diese:</p>
<pre><code class="language-cpp">void __fastcall TForm1::Button1Click(TObject *Sender)
{
 int rechenzeit    = 60;            //Sekunden
 CGauge1-&gt;MaxValue = rechenzeit*100;
 CGauge1-&gt;Visible  = true;

 for (int i = 1; i &lt;= rechenzeit*100; i++)
     {
      ::Sleep(10);
      Label4-&gt;Caption   = &quot;Berechnung abgeschlossen in &quot; + IntToStr(rechenzeit - i/100) + &quot; Sekunden.&quot;;
      CGauge1-&gt;Progress = i;
      Application-&gt;ProcessMessages();
     }
}
</code></pre>
<p>In Zeile 4 und 7, mal 100, damit bei kleinen Rechenzeiten nicht blockweise das CGauge gefüllt wird, sondern auch hier ein flüssiger Übergang zu erkennen ist.</p>
<p>LG<br />
Todd</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1405693</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1405693</guid><dc:creator><![CDATA[Todd]]></dc:creator><pubDate>Mon, 19 Nov 2007 08:03:08 GMT</pubDate></item><item><title><![CDATA[Reply to Sekundengenaue Darstellung on Mon, 19 Nov 2007 08:23:04 GMT]]></title><description><![CDATA[<p>Geht es darum, dem Benutzer eine genause Anzeige der Rechenzeit zu vermitteln oder einen schönen flüssigen Übergang unabhängig von der verbleibenden Rechenzeit zu haben ?<br />
Wenn es genauer sein soll, kannst du das ja in einen Timer setzen.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1405707</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1405707</guid><dc:creator><![CDATA[tea_timer]]></dc:creator><pubDate>Mon, 19 Nov 2007 08:23:04 GMT</pubDate></item><item><title><![CDATA[Reply to Sekundengenaue Darstellung on Mon, 19 Nov 2007 08:25:18 GMT]]></title><description><![CDATA[<p>Hallo</p>
<p>Windows ist kein Echtzeit-Betriebssystem. Du kannst nicht davon ausgehen das Sleep(10) wirklich genau 10 Millisekunden wartet, es könnten auch 9 oder 11 sein.<br />
Eine höhere Genauigkeit kannst du durch QueryPerformanceCounter erreichen, siehe WinAPI-Forum.</p>
<p>/Edit : Die Genauigkeit von TTimer ist grade in dem Millisekundenbereich unter 100 auch nicht besser als Sleep (hat dafür aber eine bessere, sprich geringere Auslastung)</p>
<p>bis bald<br />
akari</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1405708</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1405708</guid><dc:creator><![CDATA[akari]]></dc:creator><pubDate>Mon, 19 Nov 2007 08:25:18 GMT</pubDate></item><item><title><![CDATA[Reply to Sekundengenaue Darstellung on Mon, 19 Nov 2007 08:31:32 GMT]]></title><description><![CDATA[<p>Egal wie genau der Timer ist, es ist grundsätzlich Unsinn, den Wert von rechenzeit aus dem Timerintervall zu berechnen.</p>
<p>Todd, miss die tatsächlich verstrichene Zeit und errechne die Anzeige daraus.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1405712</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1405712</guid><dc:creator><![CDATA[MFK]]></dc:creator><pubDate>Mon, 19 Nov 2007 08:31:32 GMT</pubDate></item><item><title><![CDATA[Reply to Sekundengenaue Darstellung on Mon, 19 Nov 2007 09:11:43 GMT]]></title><description><![CDATA[<p>Hallo,</p>
<p>erstmal danke für eure Antworten.</p>
<p>Es geht um die möglichst genau Darstellung der verbleibenden Rechenzeit.</p>
<p>Der Nutzer gibt diese vor und schickt danach einen Algorithmus ins Rennen.<br />
Danach wird ihm angezeigt, wann der Alg. durchgelaufen ist. Einerseits über das Label, und andererseits über die CGauge.</p>
<p>Wenn keine großen Abweichungen auch in größeren Dimensionen (z.B. 3600 sec = 1 Stunde) zu erwarten sind, könnte ich mit der jetzigen Lösung leben.</p>
<p>Ansonsten werde ich den Tip der WinAPI Funktion prüfen.</p>
<p>Gibt es eine einfache Möglichkeit zwei &quot;Zeiten&quot; zu subtrahieren?<br />
Also in etwa:</p>
<pre><code class="language-cpp">{
 startzeit = jetzt;
 for (int i=1;...)
    {
     ....
     sec = jetzt - startzeit;
     ....
    }
}
</code></pre>
<p>Danke und liebe Grüße<br />
Todd</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1405732</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1405732</guid><dc:creator><![CDATA[Todd]]></dc:creator><pubDate>Mon, 19 Nov 2007 09:11:43 GMT</pubDate></item><item><title><![CDATA[Reply to Sekundengenaue Darstellung on Mon, 19 Nov 2007 09:31:13 GMT]]></title><description><![CDATA[<p>Hallo</p>
<p>Ja das geht mit TDateTime. In deinem Fall dürfte aber die bereits genannte WinAPI-Funktion besser sein, die nach genau diesem Pronzip arbeitet aber effizienter ist.</p>
<p>bis bald<br />
akari</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1405741</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1405741</guid><dc:creator><![CDATA[akari]]></dc:creator><pubDate>Mon, 19 Nov 2007 09:31:13 GMT</pubDate></item><item><title><![CDATA[Reply to Sekundengenaue Darstellung on Mon, 19 Nov 2007 09:40:15 GMT]]></title><description><![CDATA[<p>prinzipiell würd ich von der verwendung von</p>
<p>Application-&gt;ProcessMessages();</p>
<p>abraten, hab nur schlechte erfahrungen damit gemacht, arbeite lieber mit signalen wenn es sein muss, wenn du methoden verschachtelt startest die dan abwechselnd immer wieder Application-&gt;ProcessMessages(); aufrufen, gibt das nur ärger</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1405746</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1405746</guid><dc:creator><![CDATA[Ceos]]></dc:creator><pubDate>Mon, 19 Nov 2007 09:40:15 GMT</pubDate></item><item><title><![CDATA[Reply to Sekundengenaue Darstellung on Mon, 19 Nov 2007 14:49:55 GMT]]></title><description><![CDATA[<p>Danke für eure Antworten.</p>
<p>Versuche mal mit der WinAPI Funktion zurechtzukommen.</p>
<p>LG<br />
Todd</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1405948</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1405948</guid><dc:creator><![CDATA[Todd]]></dc:creator><pubDate>Mon, 19 Nov 2007 14:49:55 GMT</pubDate></item><item><title><![CDATA[Reply to Sekundengenaue Darstellung on Wed, 21 Nov 2007 16:37:22 GMT]]></title><description><![CDATA[<p>Hallo zusammen,</p>
<p>habe es jetzt mal mit der WinAPI Funktion realisiert.</p>
<pre><code class="language-cpp">LARGE_INTEGER jetzt, startzeit, pc_freq;

 int rechenzeit               = 60;
 int verstrichene_sekunden    = 0;
 CGauge1-&gt;MaxValue            = rechenzeit;
 CGauge1-&gt;Visible             = true;
 QueryPerformanceCounter(&amp;startzeit);
 QueryPerformanceFrequency(&amp;pc_freq);

 while (verstrichene_sekunden &lt; rechenzeit)
 {
  QueryPerformanceCounter(&amp;jetzt);
  verstrichene_sekunden = (jetzt.QuadPart-startzeit.QuadPart)/pc_freq.QuadPart;
  Label4-&gt;Caption       = &quot;Berechnung abgeschlossen in &quot; + IntToStr(rechenzeit - verstrichene_sekunden) +&quot; Sekunden.&quot;;
  CGauge1-&gt;Progress     = verstrichene_sekunden;
  Application-&gt;ProcessMessages();
 }
</code></pre>
<p>Funktioniert soweit auch ganz gut.</p>
<p>Jetzt aber eine andere Frage bezüglich dieses Themas:</p>
<p>Mein CGauge liegt auf einer Toolbar, hinter allen ToolButtons.<br />
Die Breite/Länge der CGauge schließt mit der Breite der ToolBar bzw. des Forms ab.</p>
<p>Ich kann das Form auf 2 Größen verändern. Einmal Standardgröße (meine Voreinstellung) und maximiert über den gesamten Bildschirm.</p>
<p>Leider macht die CGauge diese Größenveränderung nicht mit.<br />
Habe schon alles mit Anchors, Align und im Resize() Event von Form1 probiert.<br />
Leider ohne Erfolg.</p>
<p>Wie bringe ich die CGauge dazu die zwei Größendarstellungen mitzumachen?</p>
<p>LG<br />
Todd</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1407531</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1407531</guid><dc:creator><![CDATA[Todd]]></dc:creator><pubDate>Wed, 21 Nov 2007 16:37:22 GMT</pubDate></item><item><title><![CDATA[Reply to Sekundengenaue Darstellung on Wed, 21 Nov 2007 16:46:40 GMT]]></title><description><![CDATA[<p>Siehe dazu in der BCB Hilfe : Anchors</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1407544</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1407544</guid><dc:creator><![CDATA[helper]]></dc:creator><pubDate>Wed, 21 Nov 2007 16:46:40 GMT</pubDate></item><item><title><![CDATA[Reply to Sekundengenaue Darstellung on Wed, 21 Nov 2007 16:55:21 GMT]]></title><description><![CDATA[<p>Danke für deine Antwort.</p>
<p>Ich habe bereits folgende Anchors Einstellungen der CGauge getestet:</p>
<p>Anchors akLEFT = true;<br />
Anchors akRIGHT = true;</p>
<p>Aber es funktioniert nicht.</p>
<p>Für jeden Weiteren Tipp vielen Dank...</p>
<p>LG<br />
Todd</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1407552</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1407552</guid><dc:creator><![CDATA[Todd]]></dc:creator><pubDate>Wed, 21 Nov 2007 16:55:21 GMT</pubDate></item><item><title><![CDATA[Reply to Sekundengenaue Darstellung on Wed, 21 Nov 2007 18:37:40 GMT]]></title><description><![CDATA[<p>Todd schrieb:</p>
<blockquote>
<p>Jetzt aber eine andere Frage bezüglich dieses Themas:</p>
</blockquote>
<p>Bezüglich welchen Themas? Was hat die Ausrichtung eines Controls mit &quot;sekundengenauer Darstellung&quot; zu tun?</p>
<p>In Zukunft bitte die Faustregel beachten: ein Thema pro Thread, ein Thread pro Thema. Danke!</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1407638</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1407638</guid><dc:creator><![CDATA[Jansen]]></dc:creator><pubDate>Wed, 21 Nov 2007 18:37:40 GMT</pubDate></item><item><title><![CDATA[Reply to Sekundengenaue Darstellung on Thu, 22 Nov 2007 09:54:25 GMT]]></title><description><![CDATA[<p>Erstmal danke an alle die mir hier geholfen haben.</p>
<p>Werde für mein CGauge Problem einen neuen Thread öffnen.</p>
<p>Liebe Grüße<br />
Todd</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1407977</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1407977</guid><dc:creator><![CDATA[Todd]]></dc:creator><pubDate>Thu, 22 Nov 2007 09:54:25 GMT</pubDate></item></channel></rss>