<?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[Überlauf Schutz durch automatische reservierung]]></title><description><![CDATA[<p>Guten Morgen Leute,</p>
<p>ich möchte für ein aktuelles (stark unter- und überlaufs gefährdetes) Projekt eine Klasse so konzipieren, dass ich Zahlen (sowohl gleitkomma, als auch ganzzahl) so definieren kann, dass diese sich im Falle eines drohenden Speicherüberlaufs dynamisch mehr besorgen <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>
<p>Beispielsweise Shorts, die sich, sollten sie zu hoch addiert werden, so viele Shorts holen (und die überstehenden Ziffern in die neuen reinschreiben), dass kein Überlauf eintreten kann... äh ach ja, die üblichen arithmetischen methoden sollten dann natürlich noch implementiert werden, als operator elementfunktionen oder als globale, mal schauen - ohne gleitkomma-ungenauigkeit, aber das kommt später.</p>
<p>1. Geht sowas? ( gehen tut alles - ich präzisiere: Geht das unter 1000 zeilen?)<br />
2. Kann mir jemand einen Tipp (mehr will ich gar nicht) geben, in welche Richtung das ungefähr laufen könnte ? Welche Möglichkeiten habe ich ?</p>
<p>Ich danke.</p>
]]></description><link>https://www.c-plusplus.net/forum/topic/221592/überlauf-schutz-durch-automatische-reservierung</link><generator>RSS for Node</generator><lastBuildDate>Sat, 03 Oct 2026 16:51:18 GMT</lastBuildDate><atom:link href="https://www.c-plusplus.net/forum/topic/221592.rss" rel="self" type="application/rss+xml"/><pubDate>Mon, 01 Sep 2008 05:09:08 GMT</pubDate><ttl>60</ttl><item><title><![CDATA[Reply to Überlauf Schutz durch automatische reservierung on Mon, 01 Sep 2008 05:09:08 GMT]]></title><description><![CDATA[<p>Guten Morgen Leute,</p>
<p>ich möchte für ein aktuelles (stark unter- und überlaufs gefährdetes) Projekt eine Klasse so konzipieren, dass ich Zahlen (sowohl gleitkomma, als auch ganzzahl) so definieren kann, dass diese sich im Falle eines drohenden Speicherüberlaufs dynamisch mehr besorgen <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>
<p>Beispielsweise Shorts, die sich, sollten sie zu hoch addiert werden, so viele Shorts holen (und die überstehenden Ziffern in die neuen reinschreiben), dass kein Überlauf eintreten kann... äh ach ja, die üblichen arithmetischen methoden sollten dann natürlich noch implementiert werden, als operator elementfunktionen oder als globale, mal schauen - ohne gleitkomma-ungenauigkeit, aber das kommt später.</p>
<p>1. Geht sowas? ( gehen tut alles - ich präzisiere: Geht das unter 1000 zeilen?)<br />
2. Kann mir jemand einen Tipp (mehr will ich gar nicht) geben, in welche Richtung das ungefähr laufen könnte ? Welche Möglichkeiten habe ich ?</p>
<p>Ich danke.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1574431</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1574431</guid><dc:creator><![CDATA[Floyd]]></dc:creator><pubDate>Mon, 01 Sep 2008 05:09:08 GMT</pubDate></item><item><title><![CDATA[Reply to Überlauf Schutz durch automatische reservierung on Mon, 01 Sep 2008 05:39:57 GMT]]></title><description><![CDATA[<p>Schau mal bei <a href="http://www.generic-home.de" rel="nofollow">www.generic-home.de</a> vorbei. Dort gibt es unter anderem:</p>
<p>&quot;Eine Klasse für BCD Zahlen (Binary Coded Decimal) ermöglicht genaue dezimale Arithmetik für alle Arten von kommerziellen Anwendungen, die sich Rundungsfehler nicht leisten können. Eine Genauigkeit von 18 Stellen ist für einen Zahlenbereich zwischen 10E-63 und 10E+63 garantiert. Damit läßt sich die Staatsschulden aller Staaten der Welt auf den Pfennig genau ausrechnen.&quot;</p>
<p>Wenn Du es lieber selbst machen möchtest, sind BCD - Zahlen auf jeden (meiner Meinung nach) Deine Lösung.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1574437</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1574437</guid><dc:creator><![CDATA[Belli]]></dc:creator><pubDate>Mon, 01 Sep 2008 05:39:57 GMT</pubDate></item><item><title><![CDATA[Reply to Überlauf Schutz durch automatische reservierung on Mon, 01 Sep 2008 12:09:37 GMT]]></title><description><![CDATA[<p>Nette Sache - zum Thema selbst machen: Kannst du nähere Infos zur Implementierung dieser Zahlen geben ? also jede ziffer wird binär dargestellt, soweit so klar. Wie er folgt die nachkomma implementierung ? Wie könnten (umriss) arithmetische aktionen implementiert werden ?</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1574666</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1574666</guid><dc:creator><![CDATA[Floyd]]></dc:creator><pubDate>Mon, 01 Sep 2008 12:09:37 GMT</pubDate></item><item><title><![CDATA[Reply to Überlauf Schutz durch automatische reservierung on Mon, 01 Sep 2008 12:54:59 GMT]]></title><description><![CDATA[<p>Jede Ziffer wird in einem Byte gespeichert. Um Platz zu sparen, kann man auch 2 Ziffern in einem Byte - also jeweils ein halbes Byte repräsentiert eine Ziffer - speichern.<br />
Implementierungsdetails kann ich Dir da auch nicht geben.<br />
Ich habe sowas mal mit einem anderen Ansatz begonnen, indem ich den Vorkommateil und den Nachkommateil getrennt in einem int - Wert gespeichert habe.<br />
Zusätzlich hatte ich noch einen bool für das Vorzeichen und einen weiteren int - Wert für die Anzahl der Nachkommastellen - so daß zB der Wert 52,0034 so abgespeichert wurde:</p>
<p>int vk = 52<br />
int nk = 34<br />
int nkstellen = 4<br />
bool negativ = false</p>
<p>Das Rechnen damit war etwas holperig wegen der seltsamen Speicherung des Nachkommaanteils (ich hatte keine bessere Idee), aber Addition und Subtraktion hatte ich wohl implementiert (Überladen der Operatoren + bzw. -).<br />
Ein paar sinnvolle Konstruktoren dazu ...<br />
Multiplikation dürfte auch kein Problem sein, denke ich, über Division habe ich mir noch keine Gedanken gemacht.<br />
Für meine damalige Problemstellung genügte Addition und Subtraktion - ich hatte vorher float - Werte und die taugen nicht für Anwendungen, die mit Beträgen hantieren.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1574709</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1574709</guid><dc:creator><![CDATA[Belli]]></dc:creator><pubDate>Mon, 01 Sep 2008 12:54:59 GMT</pubDate></item><item><title><![CDATA[Reply to Überlauf Schutz durch automatische reservierung on Mon, 01 Sep 2008 13:00:28 GMT]]></title><description><![CDATA[<p>Ja, die Trennung von Vor- und Nachkommastellen war auch meine erste Überlegung - ich dachte nur es gäbe eine hübsche lehrbuch, standard lösung ... aber danke!</p>
<p>Wenn ich das jetzt noch so hinkriege, dass ich zu den Zahlen irgendwie gültigkeits bereiche angeben könnte, bei deren überschreiten automatisch mehr reserviert wird, wäre ich ausnahmsweise sogar mal glücklich ... <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/1574715</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1574715</guid><dc:creator><![CDATA[Floyd]]></dc:creator><pubDate>Mon, 01 Sep 2008 13:00:28 GMT</pubDate></item><item><title><![CDATA[Reply to Überlauf Schutz durch automatische reservierung on Mon, 01 Sep 2008 13:13:27 GMT]]></title><description><![CDATA[<p>Du hast damit 9 Vorkommastellen und 9 signifikante Nachkommastellen, wobei Du tatsächlich viel mehr Nachkommastellen haben kannst:</p>
<p>vk = 123456789<br />
nk = 987654321<br />
nkstellen = 15</p>
<p>ergibt: 123456789,000000987654321</p>
<p>das sollte für normale Anwendungen, die mit Währungen, Beträgen hantieren doch genügen?!<br />
Für wissenschaftliche Anwendungen wiederum eignen sich ja float/double sowieso besser.</p>
<p>Ansonsten gibt es bei einigen modernen Compilern doch auch 64bit-Integer - Werte, die Du Dir sonst zur Not selbst zusammenstricken kannst - dann wird es halt noch einmal aufwendiger.</p>
<p>Alternativ kannst Du ja mal über das BCD-Format nachdenken ... ein Byte je Ziffer für den Anfang - irgendwie muß das ja auch gehen, ich hab mir da noch keine ernsthaften Gedanken drüber gemacht.<br />
Oder Du holst Dir den Code von <a href="http://www.generic-home.de" rel="nofollow">www.generic-home.de</a> und schaust Dir mal deren Schnittstelle an ... vielleicht ergeben sich daraus ein paar Anregungen.</p>
<p>Auf jeden Fall viel Spaß bei den weiteren Forschungen!</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1574733</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1574733</guid><dc:creator><![CDATA[Belli]]></dc:creator><pubDate>Mon, 01 Sep 2008 13:13:27 GMT</pubDate></item><item><title><![CDATA[Reply to Überlauf Schutz durch automatische reservierung on Mon, 01 Sep 2008 13:16:27 GMT]]></title><description><![CDATA[<p>Hab gerade noch mal nachgesehen, Du kannst dort den Source-Code downloaden und nachsehen, wie es dort gemacht wird ...</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1574738</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1574738</guid><dc:creator><![CDATA[Belli]]></dc:creator><pubDate>Mon, 01 Sep 2008 13:16:27 GMT</pubDate></item><item><title><![CDATA[Reply to Überlauf Schutz durch automatische reservierung on Mon, 01 Sep 2008 17:32:24 GMT]]></title><description><![CDATA[<p>Belli schrieb:</p>
<blockquote>
<p>Hab gerade noch mal nachgesehen, Du kannst dort den Source-Code downloaden und nachsehen, wie es dort gemacht wird ...</p>
</blockquote>
<p>ah, super danke ! sowas brauchte ich ...</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1574915</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1574915</guid><dc:creator><![CDATA[Floyd]]></dc:creator><pubDate>Mon, 01 Sep 2008 17:32:24 GMT</pubDate></item><item><title><![CDATA[Reply to Überlauf Schutz durch automatische reservierung on Sun, 28 Sep 2008 21:55:13 GMT]]></title><description><![CDATA[<p>Hallo Leute,</p>
<p>nachdem ich eine ganze Menge anderes Krams gemacht habe, habe ich soeben versucht mir die generic++ BCD-Klasse zu besorgen und zu benutzen - versucht wohlgemerkt :D. Es funktioniert soweit alles und die Klasse scheint ein äußerst mächtiges Tool zu sein, nur leider kann ich nichts mehr kompilieren, da alles voller &quot;ungelöster externen&quot;ist. JEde benutzte Elementfunktion wird als &quot;unresolved external&quot; in meiner .obj datei angezeigt. Da ich immer noch nicht so richtig weiß, was ich in so einem falle tun soll, frage ich euch einfach mal. Muss man spezielle Dinge beachten, wenn man eine solche Bibliothek, wie die Generic++ verwendet, beachten, was den Linker angeht ?</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1589921</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1589921</guid><dc:creator><![CDATA[Floyd]]></dc:creator><pubDate>Sun, 28 Sep 2008 21:55:13 GMT</pubDate></item><item><title><![CDATA[Reply to Überlauf Schutz durch automatische reservierung on Mon, 29 Sep 2008 06:25:50 GMT]]></title><description><![CDATA[<p>Ja, das muss man. Ich kenne mich mit deiner konkreten Bibliothek nicht aus, aber du musst wahrscheinlich erstmal die Bibliothek selber kompilieren und dann (je nach Compiler/Linker unterschiedlich) deinen Compiler/Linker dazu bringen, dagegen zu linken.</p>
<p>Felix</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1590033</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1590033</guid><dc:creator><![CDATA[Phoemuex]]></dc:creator><pubDate>Mon, 29 Sep 2008 06:25:50 GMT</pubDate></item><item><title><![CDATA[Reply to Überlauf Schutz durch automatische reservierung on Mon, 29 Sep 2008 07:28:08 GMT]]></title><description><![CDATA[<p>Phoemuex schrieb:</p>
<blockquote>
<p>... aber du musst wahrscheinlich erstmal die Bibliothek selber kompilieren...</p>
</blockquote>
<p>naja, also es gibt einen include-Ordner und in der Hilfe steht nur davon, dass man einen bestimmte .h-Datei #includen soll. Das habe ich gemacht und die IDE (borland builder) schluckt die Klasse auch problemlos (Tool Tipps werden zu allen Elementfunktionen korrekt angezeigt). Woran erkennt man, dass man bestimmte Bibliotheken kompilieren muss ? Bei der Boost funktionierte es auch immer so (bisher warens aber auch nur die hübschen shared_ptr's :D).</p>
<p>Phoemuex schrieb:</p>
<blockquote>
<p>... und dann (je nach Compiler/Linker unterschiedlich) deinen Compiler/Linker dazu bringen, dagegen zu linken.</p>
</blockquote>
<p>Ähm - also als #include Pfad ist das entsprechende Verzeichnis angegeben ...<br />
<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>
]]></description><link>https://www.c-plusplus.net/forum/post/1590060</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1590060</guid><dc:creator><![CDATA[Floyd]]></dc:creator><pubDate>Mon, 29 Sep 2008 07:28:08 GMT</pubDate></item><item><title><![CDATA[Reply to Überlauf Schutz durch automatische reservierung on Mon, 29 Sep 2008 19:15:56 GMT]]></title><description><![CDATA[<p>mhh.. ok, ich finde den Fehler (mal wieder) nicht... Kennt sich jemand mit dieser Bibliothek aus oder allgemein, was man da tut (falls es irgendwelche standard Fehler gibt?). Ich kenne mich leider mit der Einbindung von solchen externen Sachen auch nicht so gut aus.</p>
<p>Ich bin mittlerweile so weit, dass ich herausgefunden habe, dass es an der Bibliothek (also an meiner Vorgehensweise sie einzubinden) liegt, warum es nicht funktioniert.</p>
<p>Denn wenn ich ein &quot;leeres&quot; Projekt erstelle und darin mal eine G_BCD Instanz erschaffe, hagelt es ebenfalls &quot;ungelöste externe&quot;.<br />
In der Beschreibung der Klasse steht:</p>
<blockquote>
<p>Data type that provides precise decimal floating point arithmetic. More...</p>
<p>#include &lt;gbcd.h&gt;</p>
<p>List of all members.<br />
Public Methods<br />
.<br />
.<br />
.<br />
blabla</p>
</blockquote>
<p>was ich mal so interpretiert habe, dass man diese gbcd.h einbinden soll - das habe ich getan.</p>
<pre><code class="language-cpp">#include &lt;vcl.h&gt;
#include &lt;gbcd.h&gt;
#pragma hdrstop

#include &quot;Unit2.h&quot;
//---------------------------------------------------------------------------
#pragma package(smart_init)
#pragma resource &quot;*.dfm&quot;
TForm2 *Form2;
//---------------------------------------------------------------------------
__fastcall TForm2::TForm2(TComponent* Owner)
	: TForm(Owner)
{
	G_BCD s;
	int g = s.toInt();
}
</code></pre>
<p>Das gibt dann:</p>
<pre><code>[Linker Fehler] Error: Ungelöste externe 'G_BCD::G_BCD()' referenziert von C:\DOKUMENTE UND EINSTELLUNGEN\ROOT\EIGENE DATEIEN\BORLAND STUDIO-PROJEKTE\DEBUG_BUILD\UNIT2.OBJ
[Linker Fehler] Error: Ungelöste externe 'G_BCD::toInt() const' referenziert von C:\DOKUMENTE UND EINSTELLUNGEN\ROOT\EIGENE DATEIEN\BORLAND STUDIO-PROJEKTE\DEBUG_BUILD\UNIT2.OBJ
</code></pre>
<p>Grrr... <img
      src="https://www.c-plusplus.net/forum/plugins/nodebb-plugin-emoji/emoji/emoji-one/1f621.png?v=ab1pehoraso"
      class="not-responsive emoji emoji-emoji-one emoji--pouting_face"
      title=":rage:"
      alt="😡"
    /></p>
<p>Nebenbemerkung: Bei der Compilation ist mir aufgefallen, dass wenn man fstream mit includiert es namenskonflikte mit der gbcd gibt - das habe ich aber gelöst, indem ich die stream einfach nicht mehr include oder eins von beiden in einen namespace gesteckt habe - aber das nur nebenbei.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1590506</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1590506</guid><dc:creator><![CDATA[Floyd]]></dc:creator><pubDate>Mon, 29 Sep 2008 19:15:56 GMT</pubDate></item><item><title><![CDATA[Reply to Überlauf Schutz durch automatische reservierung on Mon, 29 Sep 2008 19:51:30 GMT]]></title><description><![CDATA[<p>Ok, gegessen- ich weiß jetzt zumindest, wie und was ich compilieren muss - aber diese Frage stelle ich besser in einem neuen Thread, in einem anderen Unterforum</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1590524</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1590524</guid><dc:creator><![CDATA[Floyd]]></dc:creator><pubDate>Mon, 29 Sep 2008 19:51:30 GMT</pubDate></item><item><title><![CDATA[Reply to Überlauf Schutz durch automatische reservierung on Mon, 29 Sep 2008 19:52:57 GMT]]></title><description><![CDATA[<p>Sehrwahrscheinlich hast du eine benötigte Bibliothek (.lib-Datei, Header sind keine Bibliotheken) nicht mitgelinkt.</p>
<p>Floyd schrieb:</p>
<blockquote>
<p>Nebenbemerkung: Bei der Compilation ist mir aufgefallen, dass wenn man fstream mit includiert es namenskonflikte mit der gbcd gibt - das habe ich aber gelöst, indem ich die stream einfach nicht mehr include oder <strong>eins von beiden in einen namespace gesteckt habe</strong> - aber das nur nebenbei.</p>
</blockquote>
<p>Wie wärs, wenn man <code>fstream</code> einfach im Namensraum <code>std</code> lassen würde?</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1590526</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1590526</guid><dc:creator><![CDATA[Nexus]]></dc:creator><pubDate>Mon, 29 Sep 2008 19:52:57 GMT</pubDate></item></channel></rss>