<?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[Dateien lesen - Anfängerproblem]]></title><description><![CDATA[<p>Hi,</p>
<p>ich will einen Dateiinhalt in eine Variable lesen.<br />
Das mach ich so:</p>
<pre><code class="language-cpp">// Liefert die Größe einer Datei
DWORD GetFileSize(char* pcFilename)
{
	DWORD dwSize;

	int iFile = open(pcFilename, O_RDONLY);
	dwSize = filelength(iFile);
	close(iFile);

	return dwSize;
}

// Das liest die Datei aus:

	char* pcScript = NULL;

	// Dateigröße abfragen und entsprechend viel Speicher reservieren
	DWORD dwFileSize = GetFileSize(pcFilename);
	pcScript = new char[dwFileSize];
	ZeroMemory(pcScript, dwFileSize);

	// Die Datei öffnen
	FILE* pFile = fopen(pcFilename, &quot;r&quot;);
	if(pFile != NULL)
	{
		// Die Datei komplett lesen und dann schließen
		fread(pcScript, sizeof(char), dwFileSize, pFile);

		fclose(pFile);
	}
	else
	{
		return false;
	}

	return true;
</code></pre>
<p>Das klappt auch meistens, aber nicht immer. Bei der Datei mit dem Inhalt:</p>
<pre><code>string INFO = &quot;Bestimmt den Platz, an dem der Spieler das Level betritt&quot;;
string TYPE = &quot;Spielerstartpunkt&quot;;
string ICON = &quot;Spielerstart.tga&quot;;

function Platzieren
{
MessageBox(&quot;Wenn das hier als MessageBox erscheint, ist Weihnachten bestimmt schon vorbei!&quot;);
}
</code></pre>
<p>wird am Ende etwas abgeschnitten. Der Text in pcScript geht dann nur bis &quot;bestimmt&quot; und kein Zeichen weiter.</p>
<p>Ich denke, es hängt mit der Anzahl an Zeilen zusammen, dwFileSize scheint immer um die Anzahl der Zeilenumbrüche zu lang zu sein. Aber wie soll ich das Problem beheben?</p>
]]></description><link>https://www.c-plusplus.net/forum/topic/122726/dateien-lesen-anfängerproblem</link><generator>RSS for Node</generator><lastBuildDate>Mon, 06 Jul 2026 14:30:53 GMT</lastBuildDate><atom:link href="https://www.c-plusplus.net/forum/topic/122726.rss" rel="self" type="application/rss+xml"/><pubDate>Sun, 09 Oct 2005 10:58:30 GMT</pubDate><ttl>60</ttl><item><title><![CDATA[Reply to Dateien lesen - Anfängerproblem on Sun, 09 Oct 2005 10:58:30 GMT]]></title><description><![CDATA[<p>Hi,</p>
<p>ich will einen Dateiinhalt in eine Variable lesen.<br />
Das mach ich so:</p>
<pre><code class="language-cpp">// Liefert die Größe einer Datei
DWORD GetFileSize(char* pcFilename)
{
	DWORD dwSize;

	int iFile = open(pcFilename, O_RDONLY);
	dwSize = filelength(iFile);
	close(iFile);

	return dwSize;
}

// Das liest die Datei aus:

	char* pcScript = NULL;

	// Dateigröße abfragen und entsprechend viel Speicher reservieren
	DWORD dwFileSize = GetFileSize(pcFilename);
	pcScript = new char[dwFileSize];
	ZeroMemory(pcScript, dwFileSize);

	// Die Datei öffnen
	FILE* pFile = fopen(pcFilename, &quot;r&quot;);
	if(pFile != NULL)
	{
		// Die Datei komplett lesen und dann schließen
		fread(pcScript, sizeof(char), dwFileSize, pFile);

		fclose(pFile);
	}
	else
	{
		return false;
	}

	return true;
</code></pre>
<p>Das klappt auch meistens, aber nicht immer. Bei der Datei mit dem Inhalt:</p>
<pre><code>string INFO = &quot;Bestimmt den Platz, an dem der Spieler das Level betritt&quot;;
string TYPE = &quot;Spielerstartpunkt&quot;;
string ICON = &quot;Spielerstart.tga&quot;;

function Platzieren
{
MessageBox(&quot;Wenn das hier als MessageBox erscheint, ist Weihnachten bestimmt schon vorbei!&quot;);
}
</code></pre>
<p>wird am Ende etwas abgeschnitten. Der Text in pcScript geht dann nur bis &quot;bestimmt&quot; und kein Zeichen weiter.</p>
<p>Ich denke, es hängt mit der Anzahl an Zeilen zusammen, dwFileSize scheint immer um die Anzahl der Zeilenumbrüche zu lang zu sein. Aber wie soll ich das Problem beheben?</p>
]]></description><link>https://www.c-plusplus.net/forum/post/888072</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/888072</guid><dc:creator><![CDATA[Problem]]></dc:creator><pubDate>Sun, 09 Oct 2005 10:58:30 GMT</pubDate></item><item><title><![CDATA[Reply to Dateien lesen - Anfängerproblem on Sun, 09 Oct 2005 16:36:13 GMT]]></title><description><![CDATA[<p>Was fürn pcScript? Durch deinen 2.Code steige ich nicht durch, was das sein soll.</p>
<p>Zum ersten : Es gibt schon eine Winapi funktion, die exakt so heisst wie deine.<br />
<a href="http://msdn.microsoft.com/library/default.asp?url=/library/en-us/fileio/fs/getfilesize.asp" rel="nofollow">http://msdn.microsoft.com/library/default.asp?url=/library/en-us/fileio/fs/getfilesize.asp</a></p>
<p>Wieso benutzt du fopen und nicht CreateFile? Wenn du versuchst eine Binärdatei (Spielerstart.tga ?) zu öffnen, dann musst du dies bei fopen auch angeben, also &quot;rb&quot; anstelle von &quot;r&quot; da sonst beim ersten 0 Zeichen Schluss mit einlesen ist.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/888294</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/888294</guid><dc:creator><![CDATA[genom4]]></dc:creator><pubDate>Sun, 09 Oct 2005 16:36:13 GMT</pubDate></item><item><title><![CDATA[Reply to Dateien lesen - Anfängerproblem on Mon, 10 Oct 2005 11:18:39 GMT]]></title><description><![CDATA[<p>1. Das pcScript ist nur eine char* - Variable, die den Dateiinhalt aufnehmen soll.</p>
<p>2. Ich versuche die angegebene Datei zu öffnen (Der 2. Code), nicht &quot;Spielerstart.tga&quot;, das ist nur eine Textur, auf die in der Datei verwiesen wird.</p>
<p>Das ganze soll ein Skriptsystem werden, deswegen schaut die Datei so aus. Der Inhalt hat aber nichts zu sagen, es geht nur darum, dass sie falsch gelesen wird.</p>
<p>Ich habe das Ganze nun umgeschrieben:</p>
<pre><code class="language-cpp">char* pcScript = NULL;

	HANDLE hFile = CreateFile(pcFilename, GENERIC_READ, 0, NULL, OPEN_EXISTING, FILE_ATTRIBUTE_NORMAL, NULL);

		// Dateigröße abfragen und entsprechend viel Speicher reservieren
		DWORD dwFileSize = GetFileSize(hFile, NULL);
		pcScript = new char[dwFileSize];
		ZeroMemory(pcScript, dwFileSize);

		DWORD dwRead;
		ReadFile(hFile, pcScript, dwFileSize, &amp;dwRead, NULL);

	CloseHandle(hFile);
</code></pre>
<p>Nun ist es noch schlechter:<br />
Wenn ich die Datei mit dem Inhalt</p>
<p>string INFO = &quot;Heilt den Spieler bei Kontakt.&quot;;<br />
string TYPE = &quot;Heilung&quot;;<br />
string ICON = &quot;Heilung.tga&quot;;</p>
<p>einlese, steht in pcScript nun:</p>
<p>string INFO = &quot;Heilt den Spieler bei Kontakt.&quot;;<br />
string TYPE = &quot;Heilung&quot;;<br />
string ICON = &quot;Heilung.tga&quot;;ýýýý</p>
<p>Denselben Effekt hatte ich auch, als ich im vorigen Code das &quot;r&quot; in &quot;rb&quot; änderte.</p>
<p>Was mache ich jetzt schon wieder falsch? <img
      src="https://www.c-plusplus.net/forum/plugins/nodebb-plugin-emoji/emoji/emoji-one/1f615.png?v=ab1pehoraso"
      class="not-responsive emoji emoji-emoji-one emoji--confused_face"
      title=":confused:"
      alt="😕"
    /></p>
]]></description><link>https://www.c-plusplus.net/forum/post/888717</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/888717</guid><dc:creator><![CDATA[Problem]]></dc:creator><pubDate>Mon, 10 Oct 2005 11:18:39 GMT</pubDate></item><item><title><![CDATA[Reply to Dateien lesen - Anfängerproblem on Mon, 10 Oct 2005 11:20:37 GMT]]></title><description><![CDATA[<p>pcScript = new char[dwFileSize + 1];</p>
]]></description><link>https://www.c-plusplus.net/forum/post/888718</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/888718</guid><dc:creator><![CDATA[ratefuchs]]></dc:creator><pubDate>Mon, 10 Oct 2005 11:20:37 GMT</pubDate></item><item><title><![CDATA[Reply to Dateien lesen - Anfängerproblem on Mon, 10 Oct 2005 11:21:31 GMT]]></title><description><![CDATA[<p>ZeroMemory(pcScript, dwFileSize + 1);</p>
]]></description><link>https://www.c-plusplus.net/forum/post/888719</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/888719</guid><dc:creator><![CDATA[ratefuchs]]></dc:creator><pubDate>Mon, 10 Oct 2005 11:21:31 GMT</pubDate></item><item><title><![CDATA[Reply to Dateien lesen - Anfängerproblem on Tue, 11 Oct 2005 14:32:30 GMT]]></title><description><![CDATA[<p>Ok, so klappt es!</p>
<p>Es ging aber auch schon vorher: das Problem war nur dass MSVC++6 nicht den ganzen Inhalt der Variable angezeigt hat, deswegen sah es so aus als ob er abgeschnitten würde.</p>
<p>Danke für die Antworten!</p>
]]></description><link>https://www.c-plusplus.net/forum/post/889688</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/889688</guid><dc:creator><![CDATA[Problem gelöst]]></dc:creator><pubDate>Tue, 11 Oct 2005 14:32:30 GMT</pubDate></item></channel></rss>