<?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[Per CFileDialog und CFile Textdatei in TextBox lesen ?]]></title><description><![CDATA[<p>Hi Leute,</p>
<p>hab vor 2 Tagen mit der MFC angefangen und hab nu ein Prob.<br />
Ich möchte eine txtDatei beliebiger Grösse mit CFileDialog auswählen und miz CFile öffnen. Der Inhalt wird zunächst in ein TCHAR array eingelesen, bei dem ich ne Grösse angeben muss(dann klappts auch), wenn ichs auf den Heap schiebe um das Array dynymisch zu machen klappt nix mehr <img
      src="https://www.c-plusplus.net/forum/plugins/nodebb-plugin-emoji/emoji/emoji-one/1f622.png?v=ab1pehoraso"
      class="not-responsive emoji emoji-emoji-one emoji--crying_face"
      title=";("
      alt="😢"
    /></p>
<p>Hier mal mein Code des Click ereignisses :</p>
<pre><code class="language-cpp">void CFileDialogDlg::OnTextEinlesen() 
{

	CFile file;
	TCHAR *str = new TCHAR[]; // Wenn Array feste Grösse hat funzts

	char strFilter[] = { &quot;txt Files (*.txt)|*.txt|All Files (*.*)|*.*||&quot; };
	CFileDialog FileDlg(TRUE, &quot;.txt&quot;, NULL, 0, strFilter);

	if( FileDlg.DoModal() == IDOK )
	{
		 file.Open(FileDlg.GetFileName(), file.modeRead);
		 file.Read(str, sizeof(str));
	}
	else
		return;
	file.Close();

 	m_stxtBox = str;

 	UpdateData(FALSE);
}
</code></pre>
<p>Vielen Dank für eure Hilfe<br />
ShadowEater <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/topic/171242/per-cfiledialog-und-cfile-textdatei-in-textbox-lesen</link><generator>RSS for Node</generator><lastBuildDate>Mon, 27 Apr 2026 09:28:55 GMT</lastBuildDate><atom:link href="https://www.c-plusplus.net/forum/topic/171242.rss" rel="self" type="application/rss+xml"/><pubDate>Tue, 23 Jan 2007 18:51:44 GMT</pubDate><ttl>60</ttl><item><title><![CDATA[Reply to Per CFileDialog und CFile Textdatei in TextBox lesen ? on Tue, 23 Jan 2007 18:51:44 GMT]]></title><description><![CDATA[<p>Hi Leute,</p>
<p>hab vor 2 Tagen mit der MFC angefangen und hab nu ein Prob.<br />
Ich möchte eine txtDatei beliebiger Grösse mit CFileDialog auswählen und miz CFile öffnen. Der Inhalt wird zunächst in ein TCHAR array eingelesen, bei dem ich ne Grösse angeben muss(dann klappts auch), wenn ichs auf den Heap schiebe um das Array dynymisch zu machen klappt nix mehr <img
      src="https://www.c-plusplus.net/forum/plugins/nodebb-plugin-emoji/emoji/emoji-one/1f622.png?v=ab1pehoraso"
      class="not-responsive emoji emoji-emoji-one emoji--crying_face"
      title=";("
      alt="😢"
    /></p>
<p>Hier mal mein Code des Click ereignisses :</p>
<pre><code class="language-cpp">void CFileDialogDlg::OnTextEinlesen() 
{

	CFile file;
	TCHAR *str = new TCHAR[]; // Wenn Array feste Grösse hat funzts

	char strFilter[] = { &quot;txt Files (*.txt)|*.txt|All Files (*.*)|*.*||&quot; };
	CFileDialog FileDlg(TRUE, &quot;.txt&quot;, NULL, 0, strFilter);

	if( FileDlg.DoModal() == IDOK )
	{
		 file.Open(FileDlg.GetFileName(), file.modeRead);
		 file.Read(str, sizeof(str));
	}
	else
		return;
	file.Close();

 	m_stxtBox = str;

 	UpdateData(FALSE);
}
</code></pre>
<p>Vielen Dank für eure Hilfe<br />
ShadowEater <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/1215480</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1215480</guid><dc:creator><![CDATA[ShadowEater]]></dc:creator><pubDate>Tue, 23 Jan 2007 18:51:44 GMT</pubDate></item><item><title><![CDATA[Reply to Per CFileDialog und CFile Textdatei in TextBox lesen ? on Tue, 23 Jan 2007 20:47:07 GMT]]></title><description><![CDATA[<pre><code class="language-cpp">TCHAR *str = new TCHAR[];
</code></pre>
<p>Diese Zeile ist so unsinnig. Wenn du ein Array anlegen willst, musst du natürlich mitteilen, wie groß es sein soll. Da du new nutzt, muss der Wert nicht fest sein, sondern kann aus einer Variable stammen.<br />
Du musst also erst feststellen, wie lang der Text in der Datei ist und dann ein Feld entsprechender Größe anfordern.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1215560</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1215560</guid><dc:creator><![CDATA[Pellaeon]]></dc:creator><pubDate>Tue, 23 Jan 2007 20:47:07 GMT</pubDate></item><item><title><![CDATA[Reply to Per CFileDialog und CFile Textdatei in TextBox lesen ? on Wed, 24 Jan 2007 07:46:36 GMT]]></title><description><![CDATA[<p>Mit CFile::GetLength kannst Du die Größe ermitteln der Datei (in Bytes)<br />
Du kanst dann mit new einen entsprechenden array anlegen. Und dann kannst Du CFile::Read durchführen.</p>
<p>BTW: Nimm einfacher CStdioFile, dann hast Du mit Textdateien weniger Probleme.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1215716</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1215716</guid><dc:creator><![CDATA[Martin Richter]]></dc:creator><pubDate>Wed, 24 Jan 2007 07:46:36 GMT</pubDate></item><item><title><![CDATA[Reply to Per CFileDialog und CFile Textdatei in TextBox lesen ? on Wed, 24 Jan 2007 08:26:51 GMT]]></title><description><![CDATA[<p>Danke für deine Antwort (so früh schon ;))</p>
<p>ist Cstdio moderner?<br />
Ich habs mit Getlength ver sucht aber es werden nur die ersten 5 Buchstaben in die Textbox geschrieben !<br />
Die Variable m_stxtBox = str ist vom Typ CString, muss ich da str casten,l wenn ja warum wenn str nur ein normales TCHAR array ist klappt doch auch alles nur wenn ich dynamisch machen will klappts nicht? <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>
<pre><code class="language-cpp">CFile file;
	TCHAR *str = new TCHAR[];

	char strFilter[] = { &quot;txt Files (*.txt)|*.txt|All Files (*.*)|*.*||&quot; };
	CFileDialog FileDlg(TRUE, &quot;.txt&quot;, NULL, 0, strFilter);

	if( FileDlg.DoModal() == IDOK )
	{
		 file.Open(FileDlg.GetFileName(), file.modeRead);
		 file.Read(str, sizeof(str));
	}
	long lLength = file.GetLength();	 

	str[lLength];
	file.Close();

	m_stxtBox = str;

 	UpdateData(FALSE);
}
</code></pre>
<p>ShadowEater <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/1215729</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1215729</guid><dc:creator><![CDATA[ShadowEater]]></dc:creator><pubDate>Wed, 24 Jan 2007 08:26:51 GMT</pubDate></item><item><title><![CDATA[Reply to Per CFileDialog und CFile Textdatei in TextBox lesen ? on Wed, 24 Jan 2007 08:39:44 GMT]]></title><description><![CDATA[<p>Wie Pellaeon schon sagte: Du mußt schon beim new-Aufruf angeben, wieviel Speicher du benötigst. Außerdem mußt du die richtige Größe an Read() übergeben:</p>
<pre><code class="language-cpp">CFile file;
    TCHAR* str;
    char strFilter[] = { &quot;txt Files (*.txt)|*.txt|All Files (*.*)|*.*||&quot; };
    CFileDialog FileDlg(TRUE, &quot;.txt&quot;, NULL, 0, strFilter);

    if( FileDlg.DoModal() == IDOK )
    {
        file.Open(FileDlg.GetFileName(), file.modeRead);
        str=new TCHR[file.GetLength()];
        file.Read(str, file.GetLength());
    }
    file.Close();

    m_stxtBox = str;
    delete[]str;

    UpdateData(FALSE);
</code></pre>
<p>PS: Eigentlich könntest du dir das Kopieren auch ersparen und direkt in den Puffer des Zielstrings einlesen:</p>
<pre><code class="language-cpp">if(FileDlg.DoModal()==IDOK)
{
  file.Open(FileDlg.GetFileName(),file.modeRead);
  long size=file.GetLength();
  file.Read(m_stxtBox.GetBuffer(size),size);
  m_stxtBox.ReleaseBuffer();
}
</code></pre>
]]></description><link>https://www.c-plusplus.net/forum/post/1215740</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1215740</guid><dc:creator><![CDATA[CStoll]]></dc:creator><pubDate>Wed, 24 Jan 2007 08:39:44 GMT</pubDate></item><item><title><![CDATA[Reply to Per CFileDialog und CFile Textdatei in TextBox lesen ? on Wed, 24 Jan 2007 09:29:42 GMT]]></title><description><![CDATA[<p>D*A*N*K*E CSToll,:) <img
      src="https://www.c-plusplus.net/forum/plugins/nodebb-plugin-emoji/emoji/emoji-one/1f642.png?v=ab1pehoraso"
      class="not-responsive emoji emoji-emoji-one emoji--slightly_smiling_face"
      title=":)"
      alt="🙂"
    /> <img
      src="https://www.c-plusplus.net/forum/plugins/nodebb-plugin-emoji/emoji/emoji-one/1f642.png?v=ab1pehoraso"
      class="not-responsive emoji emoji-emoji-one emoji--slightly_smiling_face"
      title=":)"
      alt="🙂"
    /></p>
<p>funktioniert hervorragend, auch die 2. Variante(gleich in den Zielbuffer einlesen). Bei der 1. Variante halt ich mir halt die Option offen noch was zu ordnen bzw zu parsen <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="😉"
    /><br />
Drei kleine Fragen hab ich aber noch :<br />
1. Wenn Du das Array str mit new auf den Heap schiebst, warum ausgerechnet in der Forschleife und nicht in der Deklaration, nach dem erzeugen des CFile Objekts?</p>
<pre><code class="language-cpp">CFile file;
    TCHAR* str;
    char strFilter[] = { &quot;txt Files (*.txt)|*.txt|All Files (*.*)|*.*||&quot; };
    CFileDialog FileDlg(TRUE, &quot;.txt&quot;, NULL, 0, strFilter);

    if( FileDlg.DoModal() == IDOK )
    {
        file.Open(FileDlg.GetFileName(), file.modeRead);
        str=new TCHR[file.GetLength()]; // &lt;---???
        file.Read(str, file.GetLength());
    }
    file.Close();

    m_stxtBox = str;
    delete[]str;

    UpdateData(FALSE);
</code></pre>
<p>2. Wenn ich das Prg. laufen lasse und der Text in die txtBox eingelesen wird, werden am Ende noch 4 undefinierte Zeichen angehängt Lean on me...ýýýý &lt;---<br />
liegt das an einer fehlenfen 0 terminierung ?<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>
<ol start="3">
<li></li>
</ol>
<p>Die Datei hatt ich doch auch mit nem fstream Objekt einlesen können und dann einfach in CString parsen ?<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>
<p>nochmal DANKE<br />
ShadowEater <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/1215770</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1215770</guid><dc:creator><![CDATA[ShadowEater]]></dc:creator><pubDate>Wed, 24 Jan 2007 09:29:42 GMT</pubDate></item><item><title><![CDATA[Reply to Per CFileDialog und CFile Textdatei in TextBox lesen ? on Wed, 24 Jan 2007 09:38:02 GMT]]></title><description><![CDATA[<p>1. Du kannst den Speicher erst dann anfordern, wenn du seine Größe kennst. Und die kannst du erst dann ermitteln, nachdem du die Datei geöffnet hast.<br />
(btw, wo siehst du in dem Code eine for-Schleife?)</p>
<p>2. Ja, die fehlende Null-Terminierung könnte ein Problem sein. Und die Lösung ist recht einfach - ein Byte mehr anlegen und mit '\0' füllen.</p>
<p>3. Klar kannst du auch fstream's verwenden, die funktionieren analog zu CFile (nur daß fstream keine eingebaute GetLength()-Methode hat)</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1215777</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1215777</guid><dc:creator><![CDATA[CStoll]]></dc:creator><pubDate>Wed, 24 Jan 2007 09:38:02 GMT</pubDate></item><item><title><![CDATA[Reply to Per CFileDialog und CFile Textdatei in TextBox lesen ? on Wed, 24 Jan 2007 09:40:24 GMT]]></title><description><![CDATA[<p><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="😉"
    /> Ich meinte IF - Abfrage <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>
<p>Danke für die Hilfe<br />
ShadowEater</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1215778</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1215778</guid><dc:creator><![CDATA[ShadowEater]]></dc:creator><pubDate>Wed, 24 Jan 2007 09:40:24 GMT</pubDate></item><item><title><![CDATA[Reply to Per CFileDialog und CFile Textdatei in TextBox lesen ? on Wed, 24 Jan 2007 10:04:43 GMT]]></title><description><![CDATA[<p>Hat geklappt, es lag an der 0 - Terminierung <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>
<pre><code class="language-cpp">void CFileDialogDlg::OnTextEinlesen() 
{

 CFile	file;								
 TCHAR*str = NULL;						
 char strFilter[] = { &quot;txt Files (*.txt)|*.txt|All Files (*.*)|*.*||&quot; }; 
 CFileDialog FileDlg(TRUE, &quot;.txt&quot;, NULL, 0, strFilter); 

 if( FileDlg.DoModal() == IDOK )						
 { 
    file.Open(FileDlg.GetFileName(), file.modeRead);
    str = new TCHAR[(file.GetLength())+1];	// &lt;---	Ein Byte mehr	
    str[(file.GetLength())] = '\0';             // &lt;--- Nullterminator
    file.Read(str, file.GetLength());				
 } 
    file.Close();									
    m_stxtBox = str; 
    delete[]str;										
    UpdateData(FALSE);							
}
</code></pre>
<p>Ist die Cstdio und CStrings moderner im Gebrauch gegenüber TCHAR ? <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>
<p>ShadowEater</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1215801</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1215801</guid><dc:creator><![CDATA[ShadowEater]]></dc:creator><pubDate>Wed, 24 Jan 2007 10:04:43 GMT</pubDate></item><item><title><![CDATA[Reply to Per CFileDialog und CFile Textdatei in TextBox lesen ? on Wed, 24 Jan 2007 10:30:08 GMT]]></title><description><![CDATA[<p>Was genau meinst du mit &quot;CStdio&quot;? Wenn du das CStdioFile meinst, dann vermutlich ja - das ist speziell für text(zeilen)orientierte Ein/Ausgabe vorgesehen. Und vor allem nutzt es CStrings, das heißt, daß du dich nicht mehr mit der Speicherverwaltung herumschlagen mußt.</p>
<p>(Aber CStdioFile liest zeilenweise, das heißt bei größeren Dateien mußt du deinen Ergebnisstring stückweise einlesen, bis die Datei leer ist)</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1215818</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1215818</guid><dc:creator><![CDATA[CStoll]]></dc:creator><pubDate>Wed, 24 Jan 2007 10:30:08 GMT</pubDate></item><item><title><![CDATA[Reply to Per CFileDialog und CFile Textdatei in TextBox lesen ? on Wed, 24 Jan 2007 10:44:33 GMT]]></title><description><![CDATA[<p>AHA werd mich damit beschäftigen.</p>
<p><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="😉"
    /><br />
ShadowEater</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1215828</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1215828</guid><dc:creator><![CDATA[ShadowEater]]></dc:creator><pubDate>Wed, 24 Jan 2007 10:44:33 GMT</pubDate></item></channel></rss>