<?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[fstream - Liefert Dateilänge -1 zurück]]></title><description><![CDATA[<p>Folgende Funktion soll eine Konfigurationstextdatei auslesen:</p>
<p><strong>!!!Achtung, bloß nicht versuchen den Quelltext in irgendeiner Form zu kompilieren und Auszuführen. Das Ding ist gemeingefährlich! <img
      src="https://www.c-plusplus.net/forum/plugins/nodebb-plugin-emoji/emoji/emoji-one/1f576.png?v=ab1pehoraso"
      class="not-responsive emoji emoji-emoji-one emoji--sunglasses"
      title=":sunglasses:"
      alt="🕶"
    /> Weiteres dazu steht unten.</strong></p>
<pre><code class="language-cpp">#ifndef _FSTREAM_
#define _FSTREAM_
#include &lt;fstream&gt;
#endif

#include &quot;AufloesungLaden.h&quot;
#include &quot;FenstermodusLaden.h&quot;
#include &quot;AILevelLaden.h&quot;
#include &quot;GamespeedLaden.h&quot;
#include &quot;GewinnpunkteLaden.h&quot;
using namespace std;
#include &lt;iostream&gt;

bool KonfigurationenLaden(int* ScreenX, int* ScreenY, bool* windowed, int* AILevel, int* Gamespeed, int* Gewinnpunkte)
{
//Konfiguration laden
int configLaenge = 0;
char AktuellesTextstueck[20];
int Position = 0;
bool AllesErfolgreichGeladen = false;
bool AllesErfolgreichGeladen1 = false;
bool AllesErfolgreichGeladen2 = false;
bool AllesErfolgreichGeladen3 = false;
bool AllesErfolgreichGeladen4 = false;
bool AllesErfolgreichGeladen5 = false;

//config.txt auslesen
ifstream Konfiguration(&quot;config.txt&quot;, ios::in);

//Länge der Datei ermitteln
Konfiguration.seekg(0, ios_base::end);
configLaenge = Konfiguration.tellg();

//An Beginn springen
Konfiguration.seekg(0, ios_base::beg);
printf(&quot;Bin vor der Schleife!\n&quot;);
cout &lt;&lt; Position + 20 &lt;&lt; &quot; ist doch gleich kleiner als &quot; &lt;&lt; configLaenge &lt;&lt; &quot;.\n&quot;;

while (!Konfiguration.eof())
{printf(&quot;Und darin!\n&quot;);
	//20 Zeichen langes Textstück auslesen + Null-Zeichen anfügen
	for (int textpos = 0; textpos &lt; 20; textpos++)
	{
		AktuellesTextstueck[textpos] = Konfiguration.get();
		Konfiguration.seekg(1, ios_base::cur);
	}
	//AktuellesTextstueck[20] = '\0';

	//Auslesen
	printf(&quot;Gleich kommt die Aufloesungsfunktion!\n&quot;);
    AllesErfolgreichGeladen1 = AufloesungLaden(&amp;Position, AktuellesTextstueck, ScreenX, ScreenY);
	printf(&quot;Und vorbei!\n&quot;);
	AllesErfolgreichGeladen2 = FenstermodusLaden(&amp;Position, AktuellesTextstueck, windowed);
	AllesErfolgreichGeladen3 = AILevelLaden(&amp;Position, AktuellesTextstueck, AILevel);
	AllesErfolgreichGeladen4 = GamespeedLaden(&amp;Position, AktuellesTextstueck, Gamespeed);
	AllesErfolgreichGeladen5 = GewinnpunkteLaden(&amp;Position, AktuellesTextstueck, Gewinnpunkte);

	//Weitersetzen, damit nächster Textabschnitt ein Zeichen nach letzem beginnt
	Position++;
	Konfiguration.seekg(Position, ios_base::beg);
}
    //config.txt schließen
	Konfiguration.close();

	//Auf Fehler beim Laden überprüfen
	if(AllesErfolgreichGeladen1)
	{
	    if(AllesErfolgreichGeladen2)
	    {
	        if(AllesErfolgreichGeladen3)
	        {
	            if(AllesErfolgreichGeladen4)
	            {
	                if(AllesErfolgreichGeladen5)
	                {
	                    AllesErfolgreichGeladen = true;
	                }
	            }
	        }
	    }
	}

return AllesErfolgreichGeladen;
}
</code></pre>
<p>Folgendes:</p>
<pre><code class="language-cpp">//Länge der Datei ermitteln
Konfiguration.seekg(0, ios_base::end);
configLaenge = Konfiguration.tellg();
</code></pre>
<p>Liefert mir ja eigentlich die Länge einer Textdatei zurück. Aber aus irgendeinem Grund setzt es configLaenge auf -1. Damit als Vergleichsparameter startete das Auslesen überhaupt nicht. Also wollte ich das Auslesen mit:</p>
<pre><code class="language-cpp">while (!Konfiguration.eof())
</code></pre>
<p>auf die Länge der Textdatei beschränken.</p>
<p>Kompiliere ich jetzt aber mein Programm, so läuft es in einer Dauerschleife und die Festplatte wird die ganze Zeit beansprucht. Zum Glück hab ich es nach 30 Sekunden Not-beendet, denn in den 30 Sekunden hat es mir schon eine 1,37 GB große Textdatei mit den printf und cout-Befehlen ausgespuckt. Auch laufen seitdem bei mir ein Haufen cmd.exe Prozesse, die möglicherweise auch von meinem Programm hervorgerufen wurden. Ich starte meinen Rechner jetzt erstmal neu, um das alles zu bereinigen.</p>
<p>Sieht jemand meinen Fehler? Vor allem, warum die Dateilänge nicht bestimmt werden kann. Die Datei config.txt ist in dem Ordner, in dem auch die .exe landet.</p>
]]></description><link>https://www.c-plusplus.net/forum/topic/244448/fstream-liefert-dateilänge-1-zurück</link><generator>RSS for Node</generator><lastBuildDate>Sat, 19 Sep 2026 10:21:24 GMT</lastBuildDate><atom:link href="https://www.c-plusplus.net/forum/topic/244448.rss" rel="self" type="application/rss+xml"/><pubDate>Tue, 30 Jun 2009 13:00:11 GMT</pubDate><ttl>60</ttl><item><title><![CDATA[Reply to fstream - Liefert Dateilänge -1 zurück on Tue, 30 Jun 2009 13:00:42 GMT]]></title><description><![CDATA[<p>Folgende Funktion soll eine Konfigurationstextdatei auslesen:</p>
<p><strong>!!!Achtung, bloß nicht versuchen den Quelltext in irgendeiner Form zu kompilieren und Auszuführen. Das Ding ist gemeingefährlich! <img
      src="https://www.c-plusplus.net/forum/plugins/nodebb-plugin-emoji/emoji/emoji-one/1f576.png?v=ab1pehoraso"
      class="not-responsive emoji emoji-emoji-one emoji--sunglasses"
      title=":sunglasses:"
      alt="🕶"
    /> Weiteres dazu steht unten.</strong></p>
<pre><code class="language-cpp">#ifndef _FSTREAM_
#define _FSTREAM_
#include &lt;fstream&gt;
#endif

#include &quot;AufloesungLaden.h&quot;
#include &quot;FenstermodusLaden.h&quot;
#include &quot;AILevelLaden.h&quot;
#include &quot;GamespeedLaden.h&quot;
#include &quot;GewinnpunkteLaden.h&quot;
using namespace std;
#include &lt;iostream&gt;

bool KonfigurationenLaden(int* ScreenX, int* ScreenY, bool* windowed, int* AILevel, int* Gamespeed, int* Gewinnpunkte)
{
//Konfiguration laden
int configLaenge = 0;
char AktuellesTextstueck[20];
int Position = 0;
bool AllesErfolgreichGeladen = false;
bool AllesErfolgreichGeladen1 = false;
bool AllesErfolgreichGeladen2 = false;
bool AllesErfolgreichGeladen3 = false;
bool AllesErfolgreichGeladen4 = false;
bool AllesErfolgreichGeladen5 = false;

//config.txt auslesen
ifstream Konfiguration(&quot;config.txt&quot;, ios::in);

//Länge der Datei ermitteln
Konfiguration.seekg(0, ios_base::end);
configLaenge = Konfiguration.tellg();

//An Beginn springen
Konfiguration.seekg(0, ios_base::beg);
printf(&quot;Bin vor der Schleife!\n&quot;);
cout &lt;&lt; Position + 20 &lt;&lt; &quot; ist doch gleich kleiner als &quot; &lt;&lt; configLaenge &lt;&lt; &quot;.\n&quot;;

while (!Konfiguration.eof())
{printf(&quot;Und darin!\n&quot;);
	//20 Zeichen langes Textstück auslesen + Null-Zeichen anfügen
	for (int textpos = 0; textpos &lt; 20; textpos++)
	{
		AktuellesTextstueck[textpos] = Konfiguration.get();
		Konfiguration.seekg(1, ios_base::cur);
	}
	//AktuellesTextstueck[20] = '\0';

	//Auslesen
	printf(&quot;Gleich kommt die Aufloesungsfunktion!\n&quot;);
    AllesErfolgreichGeladen1 = AufloesungLaden(&amp;Position, AktuellesTextstueck, ScreenX, ScreenY);
	printf(&quot;Und vorbei!\n&quot;);
	AllesErfolgreichGeladen2 = FenstermodusLaden(&amp;Position, AktuellesTextstueck, windowed);
	AllesErfolgreichGeladen3 = AILevelLaden(&amp;Position, AktuellesTextstueck, AILevel);
	AllesErfolgreichGeladen4 = GamespeedLaden(&amp;Position, AktuellesTextstueck, Gamespeed);
	AllesErfolgreichGeladen5 = GewinnpunkteLaden(&amp;Position, AktuellesTextstueck, Gewinnpunkte);

	//Weitersetzen, damit nächster Textabschnitt ein Zeichen nach letzem beginnt
	Position++;
	Konfiguration.seekg(Position, ios_base::beg);
}
    //config.txt schließen
	Konfiguration.close();

	//Auf Fehler beim Laden überprüfen
	if(AllesErfolgreichGeladen1)
	{
	    if(AllesErfolgreichGeladen2)
	    {
	        if(AllesErfolgreichGeladen3)
	        {
	            if(AllesErfolgreichGeladen4)
	            {
	                if(AllesErfolgreichGeladen5)
	                {
	                    AllesErfolgreichGeladen = true;
	                }
	            }
	        }
	    }
	}

return AllesErfolgreichGeladen;
}
</code></pre>
<p>Folgendes:</p>
<pre><code class="language-cpp">//Länge der Datei ermitteln
Konfiguration.seekg(0, ios_base::end);
configLaenge = Konfiguration.tellg();
</code></pre>
<p>Liefert mir ja eigentlich die Länge einer Textdatei zurück. Aber aus irgendeinem Grund setzt es configLaenge auf -1. Damit als Vergleichsparameter startete das Auslesen überhaupt nicht. Also wollte ich das Auslesen mit:</p>
<pre><code class="language-cpp">while (!Konfiguration.eof())
</code></pre>
<p>auf die Länge der Textdatei beschränken.</p>
<p>Kompiliere ich jetzt aber mein Programm, so läuft es in einer Dauerschleife und die Festplatte wird die ganze Zeit beansprucht. Zum Glück hab ich es nach 30 Sekunden Not-beendet, denn in den 30 Sekunden hat es mir schon eine 1,37 GB große Textdatei mit den printf und cout-Befehlen ausgespuckt. Auch laufen seitdem bei mir ein Haufen cmd.exe Prozesse, die möglicherweise auch von meinem Programm hervorgerufen wurden. Ich starte meinen Rechner jetzt erstmal neu, um das alles zu bereinigen.</p>
<p>Sieht jemand meinen Fehler? Vor allem, warum die Dateilänge nicht bestimmt werden kann. Die Datei config.txt ist in dem Ordner, in dem auch die .exe landet.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1735041</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1735041</guid><dc:creator><![CDATA[Little Programmer]]></dc:creator><pubDate>Tue, 30 Jun 2009 13:00:42 GMT</pubDate></item><item><title><![CDATA[Reply to fstream - Liefert Dateilänge -1 zurück on Tue, 30 Jun 2009 13:03:49 GMT]]></title><description><![CDATA[<p>Ich vermisse eine Abfrage ob die Datei überhaupt korrekt geöffnet werden konnte:<br />
if (!Konfiguration.good()) bla</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1735046</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1735046</guid><dc:creator><![CDATA[Jim Isaac Neutron]]></dc:creator><pubDate>Tue, 30 Jun 2009 13:03:49 GMT</pubDate></item><item><title><![CDATA[Reply to fstream - Liefert Dateilänge -1 zurück on Tue, 30 Jun 2009 13:06:34 GMT]]></title><description><![CDATA[<p>Mein Programm macht immer ganz komische Sachen, sieht jemand vielleicht den Fehler?</p>
<pre><code class="language-cpp">#include &quot;Foooooo.h&quot;

int main()
{
    Foo();
    return 0;
}
</code></pre>
]]></description><link>https://www.c-plusplus.net/forum/post/1735050</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1735050</guid><dc:creator><![CDATA[hustbaer]]></dc:creator><pubDate>Tue, 30 Jun 2009 13:06:34 GMT</pubDate></item><item><title><![CDATA[Reply to fstream - Liefert Dateilänge -1 zurück on Tue, 30 Jun 2009 15:53:13 GMT]]></title><description><![CDATA[<p>Stimmt, das der Fehler gleich da liegt, soweit habe ich nicht gedacht. Ja, mit einem:</p>
<pre><code class="language-cpp">//Testen ob geladen werden konnte
if (!Konfiguration.good())
{
    printf(&quot;Datei konnte nicht geöffnet werden\n&quot;);
    return false;
}
</code></pre>
<p>Nach dem Erstellen des Streams steht in der stdout.txt:</p>
<pre><code>Datei konnte nicht geöffnet werden
config.text konnte nicht korrekt eingelesen werden!
</code></pre>
<p>Hab gerade ausführlich gegoogled und mein Problem gefunden. Da hätte ich ewig suchen können. Hier in diesem Forum:</p>
<p><a href="http://powerforen.de/forum/showthread.php?t=230106#" rel="nofollow">http://powerforen.de/forum/showthread.php?t=230106#</a></p>
<p>In diesem speziellen Beitrag:</p>
<p><a href="http://powerforen.de/forum/showpost.php?s=a885acafcd52a3d40ac58268d8d4fa3a&amp;p=2168757&amp;postcount=7" rel="nofollow">http://powerforen.de/forum/showpost.php?s=a885acafcd52a3d40ac58268d8d4fa3a&amp;p=2168757&amp;postcount=7</a></p>
<p>Meine &quot;config.txt&quot; hieß &quot;config.txt.txt&quot;. Windows hat die zweite Endung nicht angezeigt und ich wär wohl auch nie selbst drauf gekommen, dass im Normalfall gar keine Endung zu sehen sein sollte.</p>
<p>Sorry, dass ich jetzt wegen dem Problem gefragt habe. Ich dachte aber echt, es wäre ein Fehler im Quelltext.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1735150</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1735150</guid><dc:creator><![CDATA[Little Programmer]]></dc:creator><pubDate>Tue, 30 Jun 2009 15:53:13 GMT</pubDate></item></channel></rss>