<?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[Fehlermeldung beim Compilieren ohne Dynamische RTL verwenden]]></title><description><![CDATA[<p>Hallo Community,</p>
<p>ich habe eine Anwendung geschrieben, die ich nun auf einem Rechner laufen lassen möchte, auf dem nicht Borland Builder installiert ist.</p>
<p>Wenn ich nun, in den Projektoptionen unter Linker den Hacken für Dynamische RTL verwenden und unter Packeges den Hacken für Mit Laufzeit Packeges aktualisieren <strong>entferne</strong>, damit mir ein Lauffähiges EXE Programm entsteht, dann bekomme ich die Fehlermeldung:</p>
<p>Im Projekt ist eine Exception der Klasse EAccessViolation aufgetreten. Meldung:'Zugriffsverletzung bei Adresse 0055B94D. Lesen von Adresse 00000000'. Prozeß wurde angehalten.</p>
<p>Wenn ich die Meldung mit OK bestätige bleibt er mir dann in der Datei _ios.c stehen.<br />
Pfad:</p>
<pre><code class="language-cpp">template &lt;class _CharT, class _Traits&gt;
basic_ios&lt;_CharT, _Traits&gt;::basic_ios()
  : ios_base(),
    _M_fill(_STLP_NULL_CHAR_INIT(_CharT)), _M_streambuf(0), _M_tied_ostream(0)
{}
</code></pre>
<p>Es muß an den Dynamischen RTL liegen, da ich versucht habe den Hacken nur bei den Laufzeit Packeges rauszunehmen und da ging es zu compilieren. Habe ich irgendwie defekte Dynamische RTL und wenn ja, wie kann ich sie dann ersetzen oder warum bekomme ich diesen Fehler?</p>
<p>Grüße<br />
egcactus</p>
]]></description><link>https://www.c-plusplus.net/forum/topic/205718/fehlermeldung-beim-compilieren-ohne-dynamische-rtl-verwenden</link><generator>RSS for Node</generator><lastBuildDate>Wed, 19 Aug 2026 17:25:32 GMT</lastBuildDate><atom:link href="https://www.c-plusplus.net/forum/topic/205718.rss" rel="self" type="application/rss+xml"/><pubDate>Sun, 17 Feb 2008 11:19:13 GMT</pubDate><ttl>60</ttl><item><title><![CDATA[Reply to Fehlermeldung beim Compilieren ohne Dynamische RTL verwenden on Sun, 17 Feb 2008 11:19:13 GMT]]></title><description><![CDATA[<p>Hallo Community,</p>
<p>ich habe eine Anwendung geschrieben, die ich nun auf einem Rechner laufen lassen möchte, auf dem nicht Borland Builder installiert ist.</p>
<p>Wenn ich nun, in den Projektoptionen unter Linker den Hacken für Dynamische RTL verwenden und unter Packeges den Hacken für Mit Laufzeit Packeges aktualisieren <strong>entferne</strong>, damit mir ein Lauffähiges EXE Programm entsteht, dann bekomme ich die Fehlermeldung:</p>
<p>Im Projekt ist eine Exception der Klasse EAccessViolation aufgetreten. Meldung:'Zugriffsverletzung bei Adresse 0055B94D. Lesen von Adresse 00000000'. Prozeß wurde angehalten.</p>
<p>Wenn ich die Meldung mit OK bestätige bleibt er mir dann in der Datei _ios.c stehen.<br />
Pfad:</p>
<pre><code class="language-cpp">template &lt;class _CharT, class _Traits&gt;
basic_ios&lt;_CharT, _Traits&gt;::basic_ios()
  : ios_base(),
    _M_fill(_STLP_NULL_CHAR_INIT(_CharT)), _M_streambuf(0), _M_tied_ostream(0)
{}
</code></pre>
<p>Es muß an den Dynamischen RTL liegen, da ich versucht habe den Hacken nur bei den Laufzeit Packeges rauszunehmen und da ging es zu compilieren. Habe ich irgendwie defekte Dynamische RTL und wenn ja, wie kann ich sie dann ersetzen oder warum bekomme ich diesen Fehler?</p>
<p>Grüße<br />
egcactus</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1457449</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1457449</guid><dc:creator><![CDATA[egcactus]]></dc:creator><pubDate>Sun, 17 Feb 2008 11:19:13 GMT</pubDate></item><item><title><![CDATA[Reply to Fehlermeldung beim Compilieren ohne Dynamische RTL verwenden on Sun, 17 Feb 2008 11:48:39 GMT]]></title><description><![CDATA[<p>Am häufigsten tritt diese Fehlermeldung auf wenn du auf einen nicht initialisierten Pointer zugreifst, meistens ein nicht initialisiertes Objekt.</p>
<p>Arbeite dein Programm einfach mal Schritt für Schritt durch (F9) und poste hier die Stelle an der die Exception auftaucht.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1457467</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1457467</guid><dc:creator><![CDATA[rean]]></dc:creator><pubDate>Sun, 17 Feb 2008 11:48:39 GMT</pubDate></item><item><title><![CDATA[Reply to Fehlermeldung beim Compilieren ohne Dynamische RTL verwenden on Sun, 17 Feb 2008 12:53:43 GMT]]></title><description><![CDATA[<p>Ich kann das Programm nicht mal starten wenn ich die Dynamischen RTL nicht eingebunden habe. Selbst wenn ich einen Haltepunkt bereits im Hauptformular auf die #include &lt;vcl.h&gt; Anweisung setze, steigt er mir mit diesem Fehler aus. Ich kann sogar die Projekt.cpp Datei nehmen und dort einen Haltepunkt definieren. Aber auch da steigt er mit der Fehlermeldung aus, bevor er zu diesem Haltepunkt gelangt.</p>
<p>Gibt es eine andere Möglichkeit, wie ich den Fehler finden kann?</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1457505</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1457505</guid><dc:creator><![CDATA[egcactus]]></dc:creator><pubDate>Sun, 17 Feb 2008 12:53:43 GMT</pubDate></item><item><title><![CDATA[Reply to Fehlermeldung beim Compilieren ohne Dynamische RTL verwenden on Sun, 17 Feb 2008 13:15:59 GMT]]></title><description><![CDATA[<p>Meinte natürlich F8 bzw. F7, sorry.<br />
Starte das Programm mal mit einem Druck auf F7 und step dich durch.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1457517</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1457517</guid><dc:creator><![CDATA[rean]]></dc:creator><pubDate>Sun, 17 Feb 2008 13:15:59 GMT</pubDate></item><item><title><![CDATA[Reply to Fehlermeldung beim Compilieren ohne Dynamische RTL verwenden on Sun, 17 Feb 2008 15:54:25 GMT]]></title><description><![CDATA[<p>Ich weiß nun wo er aussteigt, aber warum verstehe ich nicht</p>
<pre><code class="language-cpp">void CUserDaten::speicherInDatei(CUserDaten Einstellungen)
{
 // Filename anlegen
 char Filename[140];

 // Benutzerverzeichnis holen
 strcpy(Filename,Verzeichnis.getBenutzerordner());

 // Verzeichnis einbauen
 strcat(Filename,&quot;\\&quot;);

 // Benutzername holen
 strcat(Filename,Login-&gt;getBenutzer());

 // Einstellungen.dat anhängen
 strcat(Filename,&quot;_Einstellungen.dat&quot;);

 // Datei Benutzer_Einstellungen.dat binär zum Schreiben öffnen
 fstream UserEinstellungen(Filename ,ios::binary|ios::out);

 // Benutzerdaten in Datei schreiben
 UserEinstellungen.write((char*)&amp;Einstellungen, sizeof(CUserDaten));

 // Datei schließen
 UserEinstellungen.close();
}
</code></pre>
<p>Wie es aussieht hat er mit der Zeile Probleme</p>
<pre><code>fstream UserEinstellungen(Filename ,ios::binary|ios::out);
</code></pre>
<p>Wenn ich das speichern mit dem Filepointer im klassischem C mache geht es aber warum?</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1457609</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1457609</guid><dc:creator><![CDATA[egcactus]]></dc:creator><pubDate>Sun, 17 Feb 2008 15:54:25 GMT</pubDate></item><item><title><![CDATA[Reply to Fehlermeldung beim Compilieren ohne Dynamische RTL verwenden on Sun, 17 Feb 2008 15:58:10 GMT]]></title><description><![CDATA[<p>Schau dir mal an was in Filename steht kurz bevor diese Zeile ausgeführt wird.</p>
<p>Wahrscheinlich reicht als Lösung aber schon folgendes aus:</p>
<pre><code class="language-cpp">strcat(Filename,&quot;_Einstellungen.dat\0&quot;);
</code></pre>
]]></description><link>https://www.c-plusplus.net/forum/post/1457612</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1457612</guid><dc:creator><![CDATA[rean]]></dc:creator><pubDate>Sun, 17 Feb 2008 15:58:10 GMT</pubDate></item><item><title><![CDATA[Reply to Fehlermeldung beim Compilieren ohne Dynamische RTL verwenden on Sun, 17 Feb 2008 16:04:30 GMT]]></title><description><![CDATA[<p>Hallo</p>
<p>Ich glaube nicht das das Problem an std::fstream liegt, sondern eher wie schon gesagt an ungültigen Speicherzugriffen in deinem Code. Vermutlich bist du dir über die Konsequenzen von solchen binären Speicheroperatoren nicht bewußt, zum Beispiel das sie bei Pointern nur die Adresse des Pointern, nicht aber die eigentliche Instanz hinter dem Pointer speichert. Oder das solche binären Aktionen nicht auf Non-PODs (alles ausser int, float, enum, C-struct...) angewendet werden dürfen.</p>
<p>Vermutlich beinhaltet deine Klasse CUserDaten einen char* oder AnsiString als Membervariable. Und dann schlägt das einfache binäre Speichern/Lesen fehl, du kommst nicht umhin eine eigene Speicherroutine zu schreiben. Und dann kannst du das binäre Format auch gleich weglassen und im Textformat speichern. Am einfachsten nimmst du dafür TIniFile, was bereits alles bereithält.</p>
<p>Und ich sehe in deinem Codeauszug keinen Grund warum du bei dem Dateinamen mit C-Strings arbeitest. benutzt lieber AnsiString.</p>
<p>bis bald<br />
akari</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1457616</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1457616</guid><dc:creator><![CDATA[akari]]></dc:creator><pubDate>Sun, 17 Feb 2008 16:04:30 GMT</pubDate></item><item><title><![CDATA[Reply to Fehlermeldung beim Compilieren ohne Dynamische RTL verwenden on Sun, 17 Feb 2008 16:28:27 GMT]]></title><description><![CDATA[<p><a class="plugin-mentions-user plugin-mentions-a" href="https://www.c-plusplus.net/forum/uid/13869">@rean</a>:<br />
An dem \0 kann es nicht liegen, denn er hat auch Probleme beim Laden (am Beispiel einer ganz anderen Lesefunktion)</p>
<pre><code class="language-cpp">void CLevel::ladeBerechtigung(void)
{
 // Datei Berechtigungen.dat binär zum Einlesen öffnen
 fstream Berechtigungdaten(&quot;Berechtigungen.dat&quot; ,ios::binary|ios::in);

 // Wenn öffnen erfolgreich...
 if(Berechtigungdaten)
        {
         // Lese Daten aus Datei
         Berechtigungdaten.read((char*)&amp;access, sizeof(access));

         // Datei schließen
         Berechtigungdaten.close();
        }
}
</code></pre>
<p><a class="plugin-mentions-user plugin-mentions-a" href="https://www.c-plusplus.net/forum/uid/7971">@akari</a>: Leider weiß ich nicht was Non-PODs sind. Aber ich habe in den Klassen einige char Strings und ich übergebe mit Funktionen zum Teil auch als Pointer Strings in diese hinein und hole sie wieder raus.</p>
<p>Da sich bei mir aber einige Daten Typen mixen z.B. Char und Integer, wie auch Float, wollte ich die Daten als zusammenhängenden Block speichern.</p>
<p>Die TIniFile Variante wollte ich nicht nehmen, da ich in einigen Funktionen sehr viele Daten erzeuge, z.B. 10000 Messergebnisse im Floatformat, die ich mit der jeweiligen Komponenete und Masseinheit (char) abspeichere.</p>
<p>Würdet ihr mir also raten, die Funktionen im Klassischem C Code abzuspeichern und den gesammten Code mal nach fehlerhaften Speicherzugriffen scannen?</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1457627</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1457627</guid><dc:creator><![CDATA[egcactus]]></dc:creator><pubDate>Sun, 17 Feb 2008 16:28:27 GMT</pubDate></item><item><title><![CDATA[Reply to Fehlermeldung beim Compilieren ohne Dynamische RTL verwenden on Sun, 17 Feb 2008 16:53:43 GMT]]></title><description><![CDATA[<p>Hallo</p>
<p>egcactus schrieb:</p>
<blockquote>
<p><a class="plugin-mentions-user plugin-mentions-a" href="https://www.c-plusplus.net/forum/uid/7971">@akari</a>: Leider weiß ich nicht was Non-PODs sind. Aber ich habe in den Klassen einige char Strings und ich übergebe mit Funktionen zum Teil auch als Pointer Strings in diese hinein und hole sie wieder raus.</p>
</blockquote>
<p>Wie ich bereits schrieb : PODs (Plain Old Datatype) sind die klassichen C-Datentypen wie int, char, enum, C-struct, C-Arrays.<br />
Alles andere sind Non-PODs und dürfen nicht binär gespeichert werden da ihr Speicherlayout potentiel nicht binär serialisierbar ist.</p>
<blockquote>
<p>Da sich bei mir aber einige Daten Typen mixen z.B. Char und Integer, wie auch Float, wollte ich die Daten als zusammenhängenden Block speichern.</p>
</blockquote>
<p>Integer und Float wären nicht das Problem. Ich vermute mal mit Char meinst du nicht einzele char, sondern char*? Und da ist das Problem : Wenn du ein struct mit einem char* hast, dann ist das Speicherlayout eben nicht zusammenhängend. Im struct selber ist nur der Pointer mit Adresse. Beim binären Speichern des structs wird dann nur die Adresse gespeichert, nicht aber der eigentliche Inhalt des C-Strings. Wenn du nun das wieder einliest verweist der char* auf einen ungültigen Bereich und jedes Lesen fürht zu undefiniertem Verhalten, in den meisten Fällen in einer Speicherschutzverletzung.</p>
<blockquote>
<p>Die TIniFile Variante wollte ich nicht nehmen, da ich in einigen Funktionen sehr viele Daten erzeuge, z.B. 10000 Messergebnisse im Floatformat, die ich mit der jeweiligen Komponenete und Masseinheit (char) abspeichere.</p>
</blockquote>
<p>Wenn dir TiniFile zu unhandlich ist kannst du auch selber ein eigenes Format verwenden. Eine andere Möglichkeit ist XML. In modernen Builder-Varianten ist eine entsprechende XML-Klasse mit dabei</p>
<blockquote>
<p>Würdet ihr mir also raten, die Funktionen im Klassischem C Code abzuspeichern und den gesammten Code mal nach fehlerhaften Speicherzugriffen scannen?</p>
</blockquote>
<p>Nein wir raten dir :<br />
- Verwende char* und char[] nur wenn es absolut nicht anders geht! Ansonsten immer AnsiString<br />
- Gib deiner Klasse eine manuelle Speicher- und Laderoutine, die eine (Text-) Datei erzeugt. Das einfache binäre Serialisieren klappt bei deiner Klasse (offenbar) nicht mehr. Und verwende dafür C++ oder VCL-Mittel, keine alten C- oder WinAPI-Sachen.</p>
<p>bis bald<br />
akari</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1457650</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1457650</guid><dc:creator><![CDATA[akari]]></dc:creator><pubDate>Sun, 17 Feb 2008 16:53:43 GMT</pubDate></item><item><title><![CDATA[Reply to Fehlermeldung beim Compilieren ohne Dynamische RTL verwenden on Sun, 17 Feb 2008 17:14:04 GMT]]></title><description><![CDATA[<p>Ok, danke für die Information.<br />
Werde zwar ein wenig zu tun haben das umzusetzen, sind mittlerweile eine ganze Menge an Klassen, aber es soll ja funktionieren.</p>
<p>Danke<br />
egcactus</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1457668</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1457668</guid><dc:creator><![CDATA[egcactus]]></dc:creator><pubDate>Sun, 17 Feb 2008 17:14:04 GMT</pubDate></item><item><title><![CDATA[Reply to Fehlermeldung beim Compilieren ohne Dynamische RTL verwenden on Sun, 17 Feb 2008 20:01:32 GMT]]></title><description><![CDATA[<p>egcactus schrieb:</p>
<blockquote>
<p>Ich kann das Programm nicht mal starten wenn ich die Dynamischen RTL nicht eingebunden habe. Selbst wenn ich einen Haltepunkt bereits im Hauptformular auf die #include &lt;vcl.h&gt; Anweisung setze, steigt er mir mit diesem Fehler aus.</p>
</blockquote>
<p><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="😃"
    /> <img
      src="https://www.c-plusplus.net/forum/plugins/nodebb-plugin-emoji/emoji/emoji-one/1f44d.png?v=ab1pehoraso"
      class="not-responsive emoji emoji-emoji-one emoji--thumbs_up"
      title=":+1:"
      alt="👍"
    /></p>
<p>akari schrieb:</p>
<blockquote>
<p>Vermutlich beinhaltet deine Klasse CUserDaten einen char* oder AnsiString als Membervariable. Und dann schlägt das einfache binäre Speichern/Lesen fehl, du kommst nicht umhin eine eigene Speicherroutine zu schreiben</p>
</blockquote>
<p>Oft bietet sich im C++Builder auch an, den Datentyp persistent zu machen <a href="http://beensoft.blogspot.com/2006/11/how-to-persist-tpersistent.html" rel="nofollow">und über die entsprechenden VCL-Funktionen abzuspeichern</a> (dann hast du auch die Wahl zwischen Binär- und Textformat).</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1457794</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1457794</guid><dc:creator><![CDATA[audacia]]></dc:creator><pubDate>Sun, 17 Feb 2008 20:01:32 GMT</pubDate></item></channel></rss>