<?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[Zugriffsverletzung beim lesen... Warum??]]></title><description><![CDATA[<p>Hi ich habe folgenden Quelltext:</p>
<pre><code class="language-cpp">//---------------------------------------------------------------------------

#include &lt;vcl.h&gt;
#pragma hdrstop
#include &quot;IdBaseComponent.hpp&quot;
#include &quot;IdComponent.hpp&quot;
#include &quot;IdHTTP.hpp&quot;
#include &quot;IdTCPClient.hpp&quot;
#include &quot;IdTCPConnection.hpp&quot;
#include &quot;sms_unit.h&quot;
#include &quot;fstream.h&quot;
#include &lt;iostream&gt;
//---------------------------------------------------------------------------
#pragma package(smart_init)
#pragma resource &quot;*.dfm&quot;
TForm1 *Form1;

int AddSize;
int len;
int x;
int Size = 1;
String* adds;
String* Searchword;
String Meldung;

//---------------------------------------------------------------------------
__fastcall TForm1::TForm1(TComponent* Owner)
        : TForm(Owner)
{

}
//---------------------------------------------------------------------------

void __fastcall TForm1::Button1Click(TObject *Sender)
{

         Meldung = Searchword[5];
}

void __fastcall TForm1::FormCreate(TObject *Sender)
{
//TIdHTTP *IdHTTP1 = new TIdHTTP(NULL); // Instanz erstellen
IdHTTP1-&gt;HandleRedirects=true;

fstream File2(&quot;List.dat&quot;, ios::in|ios::binary);
if (File2.is_open())
{
Box-&gt;Items-&gt;Add(&quot;List.dat wurde geöffnet&quot;);
   // cout &lt;&lt; &quot;List.dat has been opened&quot; &lt;&lt; endl &lt;&lt; endl;
    File2.read((char*)&amp;Size, sizeof(Size));
   // cout &lt;&lt; &quot;The Searchwords are:&quot; &lt;&lt; endl &lt;&lt; endl;
    }
    String* Searchword = new  String[Size+1];
    if (File2.is_open())                       //ändern!!!!!
{

    for(int i=0;i &lt; Size; i++)
    {
        File2.read((char*)&amp;len, sizeof(len));
        char* buffer = new char[len+1];
        File2.read(buffer,len);
        buffer[len] = '\0';
        Searchword[i] = buffer;
        delete[] buffer;
      //  cout &lt;&lt; Searchword[i].c_str() &lt;&lt; endl;
    }

    }
 File2.close();

 fstream File3(&quot;adds.dat&quot;, ios::in|ios::binary);
if (File3.is_open())
{
Box-&gt;Items-&gt;Add(&quot;adds.dat wurde geöffnet&quot;);
    File3.read((char*)&amp;AddSize, sizeof(AddSize));
    }
    String* adds = new  String[AddSize+1];
    if (File3.is_open())                       //ändern!!!!!
{

    for(int i=0;i &lt; AddSize; i++)
    {
        File3.read((char*)&amp;len, sizeof(len));
        char* buffer = new char[len+1];
        File3.read(buffer,len);
        buffer[len] = '\0';
        adds[i] = buffer;
        delete[] buffer;
    //    cout &lt;&lt; adds[i].c_str() &lt;&lt; endl;
    }

    }
 File3.close();
}
//---------------------------------------------------------------------------
</code></pre>
<p>Das Problem ist das wenn ich auf den Button drücke<br />
die Meldung kommt &quot;Zugriffsverletzungen bei Adresse ...&quot;<br />
Sind meine Zeiger nicht mehr gültig??<br />
Wenn ja wie kann ich das beheben?<br />
Ich will nicht dass die Dateien bei jedem druck auf den Knopf geladen werden, sondern nur einmal am Anfang...</p>
<p>Mit Zeigern muss ich arbeiten da nicht von vornerein feststeht wie groß die Datei ist...</p>
<p>Könnt ihr mir helfen!</p>
<p>Wäre echt sehr dankbar!!!!!!!!!</p>
<p>Schonmal vielen Dank!</p>
<p>MfG Straightflush</p>
]]></description><link>https://www.c-plusplus.net/forum/topic/169657/zugriffsverletzung-beim-lesen-warum</link><generator>RSS for Node</generator><lastBuildDate>Thu, 13 Aug 2026 19:11:53 GMT</lastBuildDate><atom:link href="https://www.c-plusplus.net/forum/topic/169657.rss" rel="self" type="application/rss+xml"/><pubDate>Sun, 07 Jan 2007 14:59:45 GMT</pubDate><ttl>60</ttl><item><title><![CDATA[Reply to Zugriffsverletzung beim lesen... Warum?? on Sun, 07 Jan 2007 14:59:45 GMT]]></title><description><![CDATA[<p>Hi ich habe folgenden Quelltext:</p>
<pre><code class="language-cpp">//---------------------------------------------------------------------------

#include &lt;vcl.h&gt;
#pragma hdrstop
#include &quot;IdBaseComponent.hpp&quot;
#include &quot;IdComponent.hpp&quot;
#include &quot;IdHTTP.hpp&quot;
#include &quot;IdTCPClient.hpp&quot;
#include &quot;IdTCPConnection.hpp&quot;
#include &quot;sms_unit.h&quot;
#include &quot;fstream.h&quot;
#include &lt;iostream&gt;
//---------------------------------------------------------------------------
#pragma package(smart_init)
#pragma resource &quot;*.dfm&quot;
TForm1 *Form1;

int AddSize;
int len;
int x;
int Size = 1;
String* adds;
String* Searchword;
String Meldung;

//---------------------------------------------------------------------------
__fastcall TForm1::TForm1(TComponent* Owner)
        : TForm(Owner)
{

}
//---------------------------------------------------------------------------

void __fastcall TForm1::Button1Click(TObject *Sender)
{

         Meldung = Searchword[5];
}

void __fastcall TForm1::FormCreate(TObject *Sender)
{
//TIdHTTP *IdHTTP1 = new TIdHTTP(NULL); // Instanz erstellen
IdHTTP1-&gt;HandleRedirects=true;

fstream File2(&quot;List.dat&quot;, ios::in|ios::binary);
if (File2.is_open())
{
Box-&gt;Items-&gt;Add(&quot;List.dat wurde geöffnet&quot;);
   // cout &lt;&lt; &quot;List.dat has been opened&quot; &lt;&lt; endl &lt;&lt; endl;
    File2.read((char*)&amp;Size, sizeof(Size));
   // cout &lt;&lt; &quot;The Searchwords are:&quot; &lt;&lt; endl &lt;&lt; endl;
    }
    String* Searchword = new  String[Size+1];
    if (File2.is_open())                       //ändern!!!!!
{

    for(int i=0;i &lt; Size; i++)
    {
        File2.read((char*)&amp;len, sizeof(len));
        char* buffer = new char[len+1];
        File2.read(buffer,len);
        buffer[len] = '\0';
        Searchword[i] = buffer;
        delete[] buffer;
      //  cout &lt;&lt; Searchword[i].c_str() &lt;&lt; endl;
    }

    }
 File2.close();

 fstream File3(&quot;adds.dat&quot;, ios::in|ios::binary);
if (File3.is_open())
{
Box-&gt;Items-&gt;Add(&quot;adds.dat wurde geöffnet&quot;);
    File3.read((char*)&amp;AddSize, sizeof(AddSize));
    }
    String* adds = new  String[AddSize+1];
    if (File3.is_open())                       //ändern!!!!!
{

    for(int i=0;i &lt; AddSize; i++)
    {
        File3.read((char*)&amp;len, sizeof(len));
        char* buffer = new char[len+1];
        File3.read(buffer,len);
        buffer[len] = '\0';
        adds[i] = buffer;
        delete[] buffer;
    //    cout &lt;&lt; adds[i].c_str() &lt;&lt; endl;
    }

    }
 File3.close();
}
//---------------------------------------------------------------------------
</code></pre>
<p>Das Problem ist das wenn ich auf den Button drücke<br />
die Meldung kommt &quot;Zugriffsverletzungen bei Adresse ...&quot;<br />
Sind meine Zeiger nicht mehr gültig??<br />
Wenn ja wie kann ich das beheben?<br />
Ich will nicht dass die Dateien bei jedem druck auf den Knopf geladen werden, sondern nur einmal am Anfang...</p>
<p>Mit Zeigern muss ich arbeiten da nicht von vornerein feststeht wie groß die Datei ist...</p>
<p>Könnt ihr mir helfen!</p>
<p>Wäre echt sehr dankbar!!!!!!!!!</p>
<p>Schonmal vielen Dank!</p>
<p>MfG Straightflush</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1205031</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1205031</guid><dc:creator><![CDATA[Straightflush]]></dc:creator><pubDate>Sun, 07 Jan 2007 14:59:45 GMT</pubDate></item><item><title><![CDATA[Reply to Zugriffsverletzung beim lesen... Warum?? on Sun, 07 Jan 2007 15:07:19 GMT]]></title><description><![CDATA[<p>In Ermangelung genauerer Angaben wie zum Beispiel der Zeile in der das Problem auftritt wird sich Hilfe schwierig gesatalten. Und dann wäre da noch das Problem, dass man sich nicht einfach so mal deine Umgebung nachbaut. Aber ich hab dir nen <a href="http://www.junix.ch/bcb/help/debug.html" rel="nofollow">hier mal nen Tipp verlinkt mit dem du selber auch nochmals das Problem genauer untersuchen kannst.</a></p>
]]></description><link>https://www.c-plusplus.net/forum/post/1205037</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1205037</guid><dc:creator><![CDATA[junix]]></dc:creator><pubDate>Sun, 07 Jan 2007 15:07:19 GMT</pubDate></item><item><title><![CDATA[Reply to Zugriffsverletzung beim lesen... Warum?? on Sun, 07 Jan 2007 15:11:29 GMT]]></title><description><![CDATA[<p>der Debugger meldet ja garkeine Probleme insofern gibt es auch keine Zeile<br />
es reicht auch schon aus wenn man nur die kompilierte *.exe ausführt...</p>
<p>is sone Windows MessageBox...</p>
<p>Aber hier: Meldung = Searchword[5];</p>
<p>muss der Fehler liegen, bzw tritt er auf, da die Meldung erst kommt wenn man auf den Knopf drückt</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1205041</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1205041</guid><dc:creator><![CDATA[Straightflush]]></dc:creator><pubDate>Sun, 07 Jan 2007 15:11:29 GMT</pubDate></item><item><title><![CDATA[Reply to Zugriffsverletzung beim lesen... Warum?? on Sun, 07 Jan 2007 16:08:50 GMT]]></title><description><![CDATA[<p>dann solltest du mit dem Debugger mal schaun welchen Wert Searchword[5] zum Zeitpunkt der Abfrage hat, eventuell gibts es die Position 5 ja garnicht, da die meisten Felder in C++ bei 0 anfangen</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1205073</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1205073</guid><dc:creator><![CDATA[Linnea]]></dc:creator><pubDate>Sun, 07 Jan 2007 16:08:50 GMT</pubDate></item><item><title><![CDATA[Reply to Zugriffsverletzung beim lesen... Warum?? on Sun, 07 Jan 2007 17:46:50 GMT]]></title><description><![CDATA[<p>und wie kann ich das einstellen??</p>
<p>es scheint irgendwas mit der gültigkeit der zeiger tun zu haben, da wenn ich die Dateiöffnung auch in die Methode von Button1 setze es keine Probleme gibt...</p>
<p>auch wenn ich versuche den Wert von Searchword[0] zu übergeben geht es nicht</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1205134</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1205134</guid><dc:creator><![CDATA[Straightflush]]></dc:creator><pubDate>Sun, 07 Jan 2007 17:46:50 GMT</pubDate></item><item><title><![CDATA[Reply to Zugriffsverletzung beim lesen... Warum?? on Sun, 07 Jan 2007 19:57:55 GMT]]></title><description><![CDATA[<p>kann z.B. daran liegen, dass du &quot;String* Searchword&quot; zweimal definiert hast, einmal im FormCreate und einmal Global, das gleiche gilt für adds</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1205226</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1205226</guid><dc:creator><![CDATA[Linnea]]></dc:creator><pubDate>Sun, 07 Jan 2007 19:57:55 GMT</pubDate></item><item><title><![CDATA[Reply to Zugriffsverletzung beim lesen... Warum?? on Mon, 08 Jan 2007 00:17:24 GMT]]></title><description><![CDATA[<p>Straightflush schrieb:</p>
<blockquote>
<p>der Debugger meldet ja garkeine Probleme</p>
</blockquote>
<p>Diese Aussage disqualifizert sie. Denn sie zeigt das du noch nicht mal begriffen hast, was ein Debugger eigentlich macht. Schade. Ich dachte immer man liest links, die deinem als HIlfe angeboten werden.</p>
<p>Straightflush schrieb:</p>
<blockquote>
<p>insofern gibt es auch keine Zeile es reicht auch schon aus wenn man nur die kompilierte *.exe ausführt...</p>
</blockquote>
<p>Aha... und das hat ja bestimmt nichts mit dem Quelltext zu tun? Tip: Startest du das Programm in der IDE, bleibt die Anwendung nach dem Klick auf OK stehen und das was du dann siehst mit vielen Farben, etc. ist der Debugger. Damit lässt sich auch rausfinden wo &quot;sone Windows MessageBox&quot; her kommt. Denn entgegen vielleicht deinem Verdacht ist die Meldung nicht von Zauberhand auf den Bildschrim gelangt sondern die Generierung muss ebenfalls im Programm stattfinden. Windows hat damit aber gar nix zu tun.</p>
<p>Ansonsten hat Linnea wohl recht. Willkommen in der Hölle der globalen Variablen. Das Problem ist einfach zu lösen: Erklär mir bitte wieso du &quot;String* Searchword&quot; global benötigst. In einem zweiten Schritt würde ich gerne wissen, wieso du eine erneute Variablendeklaration machst, wenn du doch nur Speicher für Searchword reservieren willst.</p>
<p>Ahja und noch eine empfehlung: Verwende doch eine Stringlist statt ein String-Array für Searchword. Das vereinfacht das Handling erheblich.</p>
<p>[edit=&quot;junix&quot;]ahja, ich vergass: Bei Verwendung eines <a href="http://www.junix.ch/bcb/help/debug.html" rel="nofollow">Debuggers</a> lässt sich übrigens ein NULL-Zeiger wunderbar rausfinden.<br />
Und noch ein Tipp am Rande: Wer mit zeigern hantiert sollte sie zum Einen bei der Deklaration immer mit NULL initialisieren (selbiges gilt für deletes) und zum Anderen vor der Verwendung auf NULL prüfen. das hilft dann solche üblen Spiele wie das was du grad mitmachst zu verhindern.[/edit]</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1205358</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1205358</guid><dc:creator><![CDATA[junix]]></dc:creator><pubDate>Mon, 08 Jan 2007 00:17:24 GMT</pubDate></item><item><title><![CDATA[Reply to Zugriffsverletzung beim lesen... Warum?? on Tue, 09 Jan 2007 18:32:44 GMT]]></title><description><![CDATA[<p>okok habe jetzt so einen Haltepunkt verwendet...<br />
Der Fehler liegt definitiv in der schon vorher von mir genannten Zeile...</p>
<blockquote>
<p>Damit lässt sich auch rausfinden wo &quot;sone Windows MessageBox&quot; her kommt.</p>
</blockquote>
<p>Aber wie soll bitte der Debugger mir zeigen woher die Fehlermeldung kommmt??<br />
Tut mir ja leid wenn ich voll aufm Schlauch stehe aber in finde einfach nix derartiges...</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1206498</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1206498</guid><dc:creator><![CDATA[Straightflush]]></dc:creator><pubDate>Tue, 09 Jan 2007 18:32:44 GMT</pubDate></item><item><title><![CDATA[Reply to Zugriffsverletzung beim lesen... Warum?? on Wed, 10 Jan 2007 16:04:18 GMT]]></title><description><![CDATA[<p>Die Message-Box ist nicht dein Problem. Sie ist ein Symptom. Wenn sie durch die Zeile verursacht wird, dann wäre es wohl an der Zeit mal die restlichen Hinweise im Thread zu prüfen...oder?</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1207230</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1207230</guid><dc:creator><![CDATA[junix]]></dc:creator><pubDate>Wed, 10 Jan 2007 16:04:18 GMT</pubDate></item></channel></rss>