<?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[Daten verschwinden, es ist zum Verzweifeln!]]></title><description><![CDATA[<p>Meine struktur:</p>
<p>struct gcode_datensatz<br />
{<br />
char teilkreis_unten[80];<br />
char teilkreis_oben[80];<br />
char anfahrbogen[40];<br />
char wegfahrbogen[40];<br />
char startpunkt[40];<br />
float x;<br />
float y;<br />
float z;<br />
float i;<br />
float j;<br />
int position;<br />
};</p>
<p>bearbeite ich mit:</p>
<p>/* Dabei ist runden eine Nachkomma-Rundungsroutine. Nämlich:</p>
<p>float runden(float x, int anzahl_nachkommastellen)<br />
{<br />
float tempWert = pow(10.0, anzahl_nachkommastellen);<br />
x *= tempWert;<br />
x += 0.5;<br />
x = floor(x);<br />
x /= tempWert;<br />
return x;<br />
}</p>
<p>Die dürfte wohl nichts damit zu tun haben. */</p>
<p>void startpunkt_nachziehen(int anzahl_fraesbahnen)<br />
{<br />
int imax=2<em>anzahl_fraesbahnen;<br />
char buffer[80];<br />
int i;<br />
float startx;<br />
char startxs[8],startis[9]; for (i=0;i&lt;imax;i++);<br />
{<br />
startx = gcode[i].x;<br />
if (startx&lt;=0) {<br />
startx=startx</em>(-1);<br />
}<br />
strcpy(buffer, &quot;G1 X&quot;);<br />
sprintf(startxs,&quot;%8.3f&quot;,runden(startx,3) );<br />
strcat(buffer,startxs);<br />
strcat(buffer,&quot; i&quot;);<br />
sprintf(startis,&quot;%9.4f&quot;, runden((startx/2),3) );<br />
strcat(buffer, startis);<br />
strcat(buffer, &quot; Y0 j0&quot;);<br />
strcpy(gcode[i].startpunkt,buffer);<br />
}<br />
printf(&quot;gcode startpunkt ist %s\n&quot;,gcode[i].startpunkt);<br />
system(&quot;Pause&quot;);</p>
<p>}</p>
<p>Und sehe, bei dem Debugging-Pause, daß der die richtigen Daten hat, abgelegt in gcode[i].startpunkt. Der buffer hat die richtigen Daten, und gcode[i].startpunkt hat auch die richtigen daten.</p>
<p>Rufe ich im Anschluß daran gcode[i] aber aus dem main nochmal auf mit dieser Funktion:</p>
<p>void zeige_gcode(int anzahl_datensaetze)<br />
{<br />
for (int i=0;i&lt;anzahl_datensaetze;i++)<br />
{</p>
<p>printf(&quot;KB unten=%s\n&quot;,gcode[i].teilkreis_unten);<br />
printf(&quot;KB oben=%s\n&quot;,gcode[i].teilkreis_oben);<br />
printf(&quot;Anfahr =%s\n&quot;,gcode[i].anfahrbogen);<br />
printf(&quot;Wegfahr=%s\n&quot;,gcode[i].wegfahrbogen);<br />
printf(&quot;Startpunkt=%s\n&quot;,gcode[i].startpunkt);</p>
<p>}</p>
<p>}</p>
<p>Sind alle Felder belegt, nur .startpunkt hat überhaupt keine Daten mehr. Leeres Feld.</p>
<p>Werd ich verrückt dabei, eben noch Daten drin, danach leeres Feld.</p>
<p>Was mach ich falsch?</p>
<p>Also in Pascal wäre sowas unvorstellbar, aber c++ ist eben andere Spielwiese.</p>
<p>Wäre jedem sehr verbunden, der mir da irgendwie einen Hinweis geben könnte.</p>
<p>Das Problem vom Datenverlust habe ich nämlich schon an anderer Stelle beobachtet, aber will das hier nicht durcheinanderwürfeln.</p>
<p>Echt zum heulen!</p>
]]></description><link>https://www.c-plusplus.net/forum/topic/231958/daten-verschwinden-es-ist-zum-verzweifeln</link><generator>RSS for Node</generator><lastBuildDate>Fri, 25 Sep 2026 12:56:50 GMT</lastBuildDate><atom:link href="https://www.c-plusplus.net/forum/topic/231958.rss" rel="self" type="application/rss+xml"/><pubDate>Sat, 17 Jan 2009 17:43:01 GMT</pubDate><ttl>60</ttl><item><title><![CDATA[Reply to Daten verschwinden, es ist zum Verzweifeln! on Sat, 17 Jan 2009 17:52:54 GMT]]></title><description><![CDATA[<p>Meine struktur:</p>
<p>struct gcode_datensatz<br />
{<br />
char teilkreis_unten[80];<br />
char teilkreis_oben[80];<br />
char anfahrbogen[40];<br />
char wegfahrbogen[40];<br />
char startpunkt[40];<br />
float x;<br />
float y;<br />
float z;<br />
float i;<br />
float j;<br />
int position;<br />
};</p>
<p>bearbeite ich mit:</p>
<p>/* Dabei ist runden eine Nachkomma-Rundungsroutine. Nämlich:</p>
<p>float runden(float x, int anzahl_nachkommastellen)<br />
{<br />
float tempWert = pow(10.0, anzahl_nachkommastellen);<br />
x *= tempWert;<br />
x += 0.5;<br />
x = floor(x);<br />
x /= tempWert;<br />
return x;<br />
}</p>
<p>Die dürfte wohl nichts damit zu tun haben. */</p>
<p>void startpunkt_nachziehen(int anzahl_fraesbahnen)<br />
{<br />
int imax=2<em>anzahl_fraesbahnen;<br />
char buffer[80];<br />
int i;<br />
float startx;<br />
char startxs[8],startis[9]; for (i=0;i&lt;imax;i++);<br />
{<br />
startx = gcode[i].x;<br />
if (startx&lt;=0) {<br />
startx=startx</em>(-1);<br />
}<br />
strcpy(buffer, &quot;G1 X&quot;);<br />
sprintf(startxs,&quot;%8.3f&quot;,runden(startx,3) );<br />
strcat(buffer,startxs);<br />
strcat(buffer,&quot; i&quot;);<br />
sprintf(startis,&quot;%9.4f&quot;, runden((startx/2),3) );<br />
strcat(buffer, startis);<br />
strcat(buffer, &quot; Y0 j0&quot;);<br />
strcpy(gcode[i].startpunkt,buffer);<br />
}<br />
printf(&quot;gcode startpunkt ist %s\n&quot;,gcode[i].startpunkt);<br />
system(&quot;Pause&quot;);</p>
<p>}</p>
<p>Und sehe, bei dem Debugging-Pause, daß der die richtigen Daten hat, abgelegt in gcode[i].startpunkt. Der buffer hat die richtigen Daten, und gcode[i].startpunkt hat auch die richtigen daten.</p>
<p>Rufe ich im Anschluß daran gcode[i] aber aus dem main nochmal auf mit dieser Funktion:</p>
<p>void zeige_gcode(int anzahl_datensaetze)<br />
{<br />
for (int i=0;i&lt;anzahl_datensaetze;i++)<br />
{</p>
<p>printf(&quot;KB unten=%s\n&quot;,gcode[i].teilkreis_unten);<br />
printf(&quot;KB oben=%s\n&quot;,gcode[i].teilkreis_oben);<br />
printf(&quot;Anfahr =%s\n&quot;,gcode[i].anfahrbogen);<br />
printf(&quot;Wegfahr=%s\n&quot;,gcode[i].wegfahrbogen);<br />
printf(&quot;Startpunkt=%s\n&quot;,gcode[i].startpunkt);</p>
<p>}</p>
<p>}</p>
<p>Sind alle Felder belegt, nur .startpunkt hat überhaupt keine Daten mehr. Leeres Feld.</p>
<p>Werd ich verrückt dabei, eben noch Daten drin, danach leeres Feld.</p>
<p>Was mach ich falsch?</p>
<p>Also in Pascal wäre sowas unvorstellbar, aber c++ ist eben andere Spielwiese.</p>
<p>Wäre jedem sehr verbunden, der mir da irgendwie einen Hinweis geben könnte.</p>
<p>Das Problem vom Datenverlust habe ich nämlich schon an anderer Stelle beobachtet, aber will das hier nicht durcheinanderwürfeln.</p>
<p>Echt zum heulen!</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1647268</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1647268</guid><dc:creator><![CDATA[pascal2009]]></dc:creator><pubDate>Sat, 17 Jan 2009 17:52:54 GMT</pubDate></item><item><title><![CDATA[Reply to Daten verschwinden, es ist zum Verzweifeln! on Sat, 17 Jan 2009 18:03:00 GMT]]></title><description><![CDATA[<p>pascal2009 schrieb:</p>
<blockquote>
<p>Also in Pascal wäre sowas unvorstellbar, aber c++ ist eben andere Spielwiese.</p>
</blockquote>
<p>Das ist aber kein C++ sondern C. Vielleicht mal im ANSI C Forum fragen. Und cpp-Tags benutzen.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1647279</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1647279</guid><dc:creator><![CDATA[Tachyon]]></dc:creator><pubDate>Sat, 17 Jan 2009 18:03:00 GMT</pubDate></item><item><title><![CDATA[Reply to Daten verschwinden, es ist zum Verzweifeln! on Sat, 17 Jan 2009 18:36:24 GMT]]></title><description><![CDATA[<p>also ich mach mir mal kurz die mühe das ganze lesbar zu gestallten:</p>
<pre><code class="language-cpp">struct gcode_datensatz
{
    char teilkreis_unten[80];
    char teilkreis_oben[80];
    char anfahrbogen[40];
    char wegfahrbogen[40];
    char startpunkt[40];
    float x;
    float y;
    float z;
    float i;
    float j;
    int position;
};

float runden(float x, int anzahl_nachkommastellen)
{
    float tempWert = pow(10.0, anzahl_nachkommastellen);
    x *= tempWert;
    x += 0.5;
    x = floor(x);
    x /= tempWert;
    return x;
}

void startpunkt_nachziehen(int anzahl_fraesbahnen)
{
    int imax = 2 * anzahl_fraesbahnen;
    char buffer[80];
    float startx;
    char startxs[8], startis[9];
    for (int i = 0; i &lt; imax; ++i) // &lt;- HIER DARF KEIN SEMIKOLON
    {
        startx = gcode[i].x;
        startx = startx &lt; 0 ? -startx : startx; // kürzer und &lt;= macht kein sinn, null ist schon positiv
        // alternativ:
        // startx = abs(gcode[i].x);
        strcpy(buffer, &quot;G1 X&quot;);
        sprintf(startxs, &quot;%8.3f&quot;, runden(startx, 3) );
        strcat(buffer, startxs);
        strcat(buffer, &quot; i&quot;);
        sprintf(startis, &quot;%9.4f&quot;, runden((startx / 2), 3) );
        strcat(buffer, startis);
        strcat(buffer, &quot; Y0 j0&quot;);
        strcpy(gcode[i].startpunkt, buffer);
    }
    printf(&quot;gcode startpunkt ist %s\n&quot;,gcode[i].startpunkt);
    system(&quot;Pause&quot;); // &lt;- böse, sollte man nur zu testzwecken verwenden wenn überhaupt

}

void zeige_gcode(int anzahl_datensaetze)
{
    for (int i = 0; i &lt; anzahl_datensaetze; ++i)
    {
        printf(&quot;KB unten=%s\n&quot;, gcode[i].teilkreis_unten);
        printf(&quot;KB oben=%s\n&quot;, gcode[i].teilkreis_oben);
        printf(&quot;Anfahr =%s\n&quot;, gcode[i].anfahrbogen);
        printf(&quot;Wegfahr=%s\n&quot;, gcode[i].wegfahrbogen);
        printf(&quot;Startpunkt=%s\n&quot;, gcode[i].startpunkt);
    }
}
</code></pre>
<p>vllt liegts am semikolon.<br />
allerdings bräuchten wir dann noch die daklaration von gcode.<br />
ich vermute mal das teil ist global definiert.</p>
<p>auch möglich ist, dass anzahl_datensaetze sich von 2 * anzahl_fraesbahnen unterscheidet</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1647291</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1647291</guid><dc:creator><![CDATA[helferlein]]></dc:creator><pubDate>Sat, 17 Jan 2009 18:36:24 GMT</pubDate></item><item><title><![CDATA[Reply to Daten verschwinden, es ist zum Verzweifeln! on Sat, 17 Jan 2009 18:44:49 GMT]]></title><description><![CDATA[<p>pascal2009 schrieb:</p>
<blockquote>
<p>Also in Pascal wäre sowas unvorstellbar, aber c++ ist eben andere Spielwiese.</p>
</blockquote>
<p>wenn du schon einer sprache die schuld für deine selbstgemachten fehler gibst, beschuldige wenigstens die richtige sprache. <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>
]]></description><link>https://www.c-plusplus.net/forum/post/1647297</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1647297</guid><dc:creator><![CDATA[blame the tool]]></dc:creator><pubDate>Sat, 17 Jan 2009 18:44:49 GMT</pubDate></item><item><title><![CDATA[Reply to Daten verschwinden, es ist zum Verzweifeln! on Sat, 17 Jan 2009 19:33:06 GMT]]></title><description><![CDATA[<p>blame the tool schrieb:</p>
<blockquote>
<p>pascal2009 schrieb:</p>
<blockquote>
<p>Also in Pascal wäre sowas unvorstellbar, aber c++ ist eben andere Spielwiese.</p>
</blockquote>
<p>wenn du schon einer sprache die schuld für deine selbstgemachten fehler gibst, beschuldige wenigstens die richtige sprache. <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>
</blockquote>
<p>Wahrscheinlich hat er seinen Code mit einem C++-Compiler kompiliert und rechtfertigt so seine Ansicht... <img
      src="https://www.c-plusplus.net/forum/plugins/nodebb-plugin-emoji/emoji/emoji-one/1f603.png?v=ab1pehoraso"
      class="not-responsive emoji emoji-emoji-one emoji--grinning_face_with_big_eyes"
      title=":D"
      alt="😃"
    /></p>
]]></description><link>https://www.c-plusplus.net/forum/post/1647345</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1647345</guid><dc:creator><![CDATA[_matze]]></dc:creator><pubDate>Sat, 17 Jan 2009 19:33:06 GMT</pubDate></item><item><title><![CDATA[Reply to Daten verschwinden, es ist zum Verzweifeln! on Sun, 18 Jan 2009 03:21:10 GMT]]></title><description><![CDATA[<p>helferlein schrieb:</p>
<blockquote>
<p>also ich mach mir mal kurz die mühe das ganze lesbar zu gestallten:</p>
<p>vllt liegts am semikolon.<br />
allerdings bräuchten wir dann noch die daklaration von gcode.<br />
ich vermute mal das teil ist global definiert.</p>
<p>auch möglich ist, dass anzahl_datensaetze sich von 2 * anzahl_fraesbahnen unterscheidet</p>
</blockquote>
<p>Danke, liebes helferlein</p>
<p>ES LÄUFT JETZT !!!!!!!!!!!!!!</p>
<p>Womöglich lag es wirklich nur am Semikolon.</p>
<p>Gruß Pascal2009</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1647492</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1647492</guid><dc:creator><![CDATA[pascal2009]]></dc:creator><pubDate>Sun, 18 Jan 2009 03:21:10 GMT</pubDate></item></channel></rss>