<?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[AnsiStrings &amp;amp; Doubles &amp;amp; Rechnungen damit]]></title><description><![CDATA[<p>Hallo Leute,</p>
<p>folgende Situationen:<br />
Server stellt ein grafisches Programm mit zufällig Platzierten Hindernissen auf, man selbst soll den Clienten schreiben, der sich connectet &amp; eine Kugel automatisch durch diese zufällig Platzierten Hindernisse schleust.</p>
<p>Ich will erstmal zum bestimmen, ob die Kugeln überhaupt eine Gefahr sind ein Steigungsdreieck zu jeder Kugel machen und so den Absoluten Abstand zu ihr berechnen.</p>
<p>(Das Feld ist 600 * 400 Pixel lang)<br />
folgendes Problem:</p>
<p>Ich bekomme immer die Meldung:<br />
&quot;im programm bla.exe ist eine Exception der Klasse EConvertError aufgetreten. Meldung: &quot;&quot; ist kein gültiger Gleitkommawert.</p>
<p>Ich hatte auch schon &quot;0.00&quot; dort drin stehen.<br />
PS: Das wäre die Position die Kugel, mit der ich unter anderem Rechne.</p>
<p>Hier mal kurz der Code den ich dafür brauche, (er steht im Script nicht so wie hier untereinander)</p>
<pre><code class="language-cpp">AnsiString Vx; // Vx = ort auf x koordinate zb. 412
   double *g1=new double[anz.ToDouble()];
   double *g2=new double[anz.ToDouble()];
   double *g3=new double[anz.ToDouble()];
   AnsiString *hindx=new AnsiString [anz.ToInt()];
   AnsiString *hindy=new AnsiString [anz.ToInt()];
   AnsiString *hindgroesse=new AnsiString [anz.ToInt()];
// g1,g2,g3 für das Steigungsdreieck (gibt es evt. ne Vektorenlösung?)
// die oberen ansistrings geben Ort der x/y koordinate &amp; radius der hindernisse an

// spätere berechnung des steigungsdreiecks:
         g1[i] = hindx[i].ToDouble() - Vx.ToDouble();
         g2[i] = hindy[i].ToDouble() - Vy.ToDouble();
         g3[i] = (g1[i]*g1[i]) + (g2[i]*g2[i]);
         g3[i] = sqrt(g3[i]);

//ausgabe in einem editfeld:
        editfeld1-&gt;Text=g1[1]; // hier kommt dann nach Server start die obrige Meldung...
</code></pre>
<p>Wäre super wenn jemand auf den ersten Blick sieht was falsch ist, oder ob es evt. viel zu viel Aufwand ist.</p>
]]></description><link>https://www.c-plusplus.net/forum/topic/142206/ansistrings-amp-doubles-amp-rechnungen-damit</link><generator>RSS for Node</generator><lastBuildDate>Tue, 04 Aug 2026 01:43:05 GMT</lastBuildDate><atom:link href="https://www.c-plusplus.net/forum/topic/142206.rss" rel="self" type="application/rss+xml"/><pubDate>Tue, 28 Mar 2006 16:45:16 GMT</pubDate><ttl>60</ttl><item><title><![CDATA[Reply to AnsiStrings &amp;amp; Doubles &amp;amp; Rechnungen damit on Tue, 28 Mar 2006 16:45:16 GMT]]></title><description><![CDATA[<p>Hallo Leute,</p>
<p>folgende Situationen:<br />
Server stellt ein grafisches Programm mit zufällig Platzierten Hindernissen auf, man selbst soll den Clienten schreiben, der sich connectet &amp; eine Kugel automatisch durch diese zufällig Platzierten Hindernisse schleust.</p>
<p>Ich will erstmal zum bestimmen, ob die Kugeln überhaupt eine Gefahr sind ein Steigungsdreieck zu jeder Kugel machen und so den Absoluten Abstand zu ihr berechnen.</p>
<p>(Das Feld ist 600 * 400 Pixel lang)<br />
folgendes Problem:</p>
<p>Ich bekomme immer die Meldung:<br />
&quot;im programm bla.exe ist eine Exception der Klasse EConvertError aufgetreten. Meldung: &quot;&quot; ist kein gültiger Gleitkommawert.</p>
<p>Ich hatte auch schon &quot;0.00&quot; dort drin stehen.<br />
PS: Das wäre die Position die Kugel, mit der ich unter anderem Rechne.</p>
<p>Hier mal kurz der Code den ich dafür brauche, (er steht im Script nicht so wie hier untereinander)</p>
<pre><code class="language-cpp">AnsiString Vx; // Vx = ort auf x koordinate zb. 412
   double *g1=new double[anz.ToDouble()];
   double *g2=new double[anz.ToDouble()];
   double *g3=new double[anz.ToDouble()];
   AnsiString *hindx=new AnsiString [anz.ToInt()];
   AnsiString *hindy=new AnsiString [anz.ToInt()];
   AnsiString *hindgroesse=new AnsiString [anz.ToInt()];
// g1,g2,g3 für das Steigungsdreieck (gibt es evt. ne Vektorenlösung?)
// die oberen ansistrings geben Ort der x/y koordinate &amp; radius der hindernisse an

// spätere berechnung des steigungsdreiecks:
         g1[i] = hindx[i].ToDouble() - Vx.ToDouble();
         g2[i] = hindy[i].ToDouble() - Vy.ToDouble();
         g3[i] = (g1[i]*g1[i]) + (g2[i]*g2[i]);
         g3[i] = sqrt(g3[i]);

//ausgabe in einem editfeld:
        editfeld1-&gt;Text=g1[1]; // hier kommt dann nach Server start die obrige Meldung...
</code></pre>
<p>Wäre super wenn jemand auf den ersten Blick sieht was falsch ist, oder ob es evt. viel zu viel Aufwand ist.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1025709</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1025709</guid><dc:creator><![CDATA[Freddie]]></dc:creator><pubDate>Tue, 28 Mar 2006 16:45:16 GMT</pubDate></item><item><title><![CDATA[Reply to AnsiStrings &amp;amp; Doubles &amp;amp; Rechnungen damit on Tue, 28 Mar 2006 17:16:43 GMT]]></title><description><![CDATA[<p>Hallo</p>
<p>Das gehört ins Builder-Subforum. Es wird dich gleich ein Mod dahin verschieben.</p>
<p>Die Fehlermeldung ist doch sehr aussagekräftig.<br />
Bei der AnsiString-Methode <em>.ToDouble()</em> soll ein String in ein Float konvertiert werden, der nicht zulässig ist, in deinem Fall ein leerer String.<br />
Du kannst entweder manuell vorher die Strings vergleichen (wenn es nur um leer und gültig geht) oder um die Konvertierungen einen try/catch-Block machen, um alle nicht konvertierbaren Strings abzufangen und dann gesondert Standardwerte zuzuweisen.</p>
<p>/Edit : Wenn du den BCB6 oder höher hast, gibts dort auch die Funktion <em>StrToFloatDef()</em> die das ganze eventuell noch vereinfacht.</p>
<p>bis bald<br />
akari</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1025733</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1025733</guid><dc:creator><![CDATA[akari]]></dc:creator><pubDate>Tue, 28 Mar 2006 17:16:43 GMT</pubDate></item><item><title><![CDATA[Reply to AnsiStrings &amp;amp; Doubles &amp;amp; Rechnungen damit on Tue, 28 Mar 2006 17:35:23 GMT]]></title><description><![CDATA[<p>Also ich benutze den BCB5 und auch als ich den Wert 0.00 übermitteln wollte, hat es diese Fehlermeldung gegeben, bzw. ich weiß nicht wie ich sonst diese Rechnungen ausführen soll.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1025749</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1025749</guid><dc:creator><![CDATA[Freddie]]></dc:creator><pubDate>Tue, 28 Mar 2006 17:35:23 GMT</pubDate></item><item><title><![CDATA[Reply to AnsiStrings &amp;amp; Doubles &amp;amp; Rechnungen damit on Tue, 28 Mar 2006 17:45:47 GMT]]></title><description><![CDATA[<p>Hallo</p>
<p>.ToDouble() geht von der lokalen (hier deutschen) Schreibweise aus. Also ist <em>0.00</em> fehlerhaft, sondern <em>0,00</em> ist korrekt.<br />
Du kannst entweder mit StringReplace das falsche durch das richtige Trennzeichen ersetzen, oder (was besser ist) beim Generieren des Strings aus der Original-Double selber ein festes länderunabhängiges Format mit <em>FloatToStrF</em> bzw der Systemvariable <em>DecimalSeparator</em> sorgen, das du dann an der Zielkonvertierung wieder genauso fest wieder einliest.</p>
<p>bis bald<br />
akari</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1025758</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1025758</guid><dc:creator><![CDATA[akari]]></dc:creator><pubDate>Tue, 28 Mar 2006 17:45:47 GMT</pubDate></item><item><title><![CDATA[Reply to AnsiStrings &amp;amp; Doubles &amp;amp; Rechnungen damit on Tue, 28 Mar 2006 17:51:44 GMT]]></title><description><![CDATA[<p>Kannst du mir mal kurz erzklären wie man den DecimalSeparator setzt?</p>
<p>Einfach oben in den Konstruktor:<br />
DecimalSeparator=',';<br />
schreiben?</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1025761</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1025761</guid><dc:creator><![CDATA[Freddie]]></dc:creator><pubDate>Tue, 28 Mar 2006 17:51:44 GMT</pubDate></item><item><title><![CDATA[Reply to AnsiStrings &amp;amp; Doubles &amp;amp; Rechnungen damit on Tue, 28 Mar 2006 18:09:26 GMT]]></title><description><![CDATA[<p>Hallo</p>
<p>ja kannst du. Einfach mal ausprobieren.</p>
<p>bis bald<br />
akari</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1025776</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1025776</guid><dc:creator><![CDATA[akari]]></dc:creator><pubDate>Tue, 28 Mar 2006 18:09:26 GMT</pubDate></item><item><title><![CDATA[Reply to AnsiStrings &amp;amp; Doubles &amp;amp; Rechnungen damit on Tue, 28 Mar 2006 18:51:32 GMT]]></title><description><![CDATA[<p>Dieser Thread wurde von Moderator/in <a href="http://www.c-plusplus.net/forum/profile.php?mode=viewprofile&amp;u=10455" rel="nofollow">evilissimo</a> aus dem Forum <a href="http://www.c-plusplus.net/forum/viewforum.php?f=15" rel="nofollow">C++</a> in das Forum <a href="http://www.c-plusplus.net/forum/viewforum.php?f=2" rel="nofollow">VCL/CLX (Borland C++ Builder)</a> verschoben.</p>
<p>Im Zweifelsfall bitte auch folgende Hinweise beachten:<br />
<a href="http://www.c-plusplus.net/forum/viewtopic.php?t=39405" rel="nofollow">C/C++ Forum :: FAQ - Sonstiges :: Wohin mit meiner Frage?</a></p>
<p><em>Dieses Posting wurde automatisch erzeugt.</em></p>
]]></description><link>https://www.c-plusplus.net/forum/post/1025827</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1025827</guid><dc:creator><![CDATA[C++ Forumbot]]></dc:creator><pubDate>Tue, 28 Mar 2006 18:51:32 GMT</pubDate></item><item><title><![CDATA[Reply to AnsiStrings &amp;amp; Doubles &amp;amp; Rechnungen damit on Tue, 28 Mar 2006 19:14:12 GMT]]></title><description><![CDATA[<p>Also jetzt habe ich meinen Quellcode mal richtig in Ordnung gebracht, so dass alles - hoffentlich bzw. scheinbar - an der richtigen Stelle initalisiert wird.</p>
<p>Ich bekomme jetzt auch wieder die Meldung, dass ich zumindest die Zahl &quot;0.00&quot; im Speicher habe.</p>
<p>Ich habe aber immer noch das Problem mit dem Error, dass diese Zahl scheinbar keine Gleitkommazahl ist !</p>
<p>Double Werte benutzen also bei uns diese Schreibweise: 0,xx?<br />
Wenn ja, scheint die obengenannte Funktion nicht zu funktionieren oder scheint falsch platziert zu sein.</p>
<p>Hat da jemand eine Idee?</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1025844</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1025844</guid><dc:creator><![CDATA[Freddie]]></dc:creator><pubDate>Tue, 28 Mar 2006 19:14:12 GMT</pubDate></item><item><title><![CDATA[Reply to AnsiStrings &amp;amp; Doubles &amp;amp; Rechnungen damit on Tue, 28 Mar 2006 19:28:05 GMT]]></title><description><![CDATA[<p>Hallo</p>
<pre><code class="language-cpp">DecimalSeparator=',';
</code></pre>
<pre><code class="language-cpp">0.00
</code></pre>
<p>ich hoffe du siehst was da falsch ist</p>
<p>Mfg<br />
Klaus</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1025857</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1025857</guid><dc:creator><![CDATA[KlausB]]></dc:creator><pubDate>Tue, 28 Mar 2006 19:28:05 GMT</pubDate></item><item><title><![CDATA[Reply to AnsiStrings &amp;amp; Doubles &amp;amp; Rechnungen damit on Wed, 29 Mar 2006 09:20:37 GMT]]></title><description><![CDATA[<p>Hallo,</p>
<p>Das hier ist auch ziemlich merkwürdig</p>
<pre><code class="language-cpp">double *g1=new double[anz.ToDouble()];
double *g2=new double[anz.ToDouble()];
double *g3=new double[anz.ToDouble()];
AnsiString *hindx=new AnsiString [anz.ToInt()];
AnsiString *hindy=new AnsiString [anz.ToInt()];
AnsiString *hindgroesse=new AnsiString [anz.ToInt()];
</code></pre>
<p>Du kannst doch eine Feldgröße nicht mit double angeben. Es würde hier wahrscheinlich implizit gekastet, ist aber trotzdem nicht schön. Außerdem reicht es doch, wenn du die Zahl nur einmal umwandelst.</p>
<pre><code class="language-cpp">try
{
  int size = anz.ToInt();
}
catch(EConvertError &amp;e)
{
// irgendeine Fehlerbehandlung
}
double *g1=new double[size];
double *g2=new double[size];
double *g3=new double[size];
AnsiString *hindx=new AnsiString [size];
AnsiString *hindy=new AnsiString [size];
AnsiString *hindgroesse=new AnsiString [size];
</code></pre>
]]></description><link>https://www.c-plusplus.net/forum/post/1026232</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1026232</guid><dc:creator><![CDATA[Braunstein]]></dc:creator><pubDate>Wed, 29 Mar 2006 09:20:37 GMT</pubDate></item></channel></rss>