<?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[CFile - eine Datei wählen]]></title><description><![CDATA[<p>Hallo zusammen!</p>
<p>Ich habe einen stinknormalen Dateiauswahldialog mit der Möglichkeit mehrere Dateien auszuwählen. In meinem Prog können bestimmte Dateien geladen werden etc. manchmal mehr, manchmal weniger.</p>
<p>Die gute Nachricht: Es klappt wunderbar wenn ich &gt;= 2 Dateien auswähle.</p>
<p>Die schlechte Nachricht: Wenn ich nur eine Datei öffnen will funzt das net.</p>
<pre><code class="language-cpp">void CDlgPage1::OnButtonHANLaden() 
{ 
    SetModified(TRUE);
    CString pathname;
    TCHAR cFileNames[1024]; 
    memset(cFileNames,0,sizeof(cFileNames)); 
    CFileDialog fileDialog(TRUE,NULL,NULL,OFN_ALLOWMULTISELECT,(&quot;CPA-ErgebnisDatei (*.han)|*.han|&quot;)); 

    fileDialog.m_ofn.lpstrFile = (LPSTR)cFileNames; 
    fileDialog.m_ofn.nMaxFile  = sizeof(cFileNames);

    if (fileDialog.DoModal() == IDOK) 
    { 
        GetFiles(cFileNames); 
        for(int i=1; i&lt;m_str_arrList.GetSize(); i++) 
        {              
            pathname = fileDialog.GetPathName();
            StartLoadData(m_str_arrList.GetAt(i),pathname);
            // hier wird die eigentliche Funktion zum &quot;Laden&quot; der Datei aufger.
            // ich übergebe ihr gleich den Dateinamen und den Pfad 
        } 
    } 
}
void CDlgPage1::GetFiles(TCHAR cFileNames[1024])
{
    CString strFileName; 
    for (int i=0; i&lt;=1024; i++) 
    { 
        strFileName += cFileNames[i]; 
        if(strFileName == &quot;\0&quot;) 
            break; 

        if(cFileNames[i] == '\0') 
        { 
            m_str_arrList.Add(strFileName); 
            strFileName.Empty(); 
        }    
    } 
}
</code></pre>
<p>Meine -noch- Vermutung ist das die Trennung der Files im TCHARFeld schuld ist. Bei mehreren Dateien wird ja \0 sozusagen dazwischengeschrieben. Wenn ich nur eine Datei öffne brauch ja gar keine Trennung vorgenommen werden und deshalb findet er auch kein \0 wieder beim Auslesen des Arrays.</p>
<p>Wer kann mit dem Problem was anfangen. Für Lösungsvorschläge oder Ideen wie ich dieses Problem - in welcher Art und Weise auch immer - in den Griff bekomme bin ich verdammt dankbar.</p>
<p>Mit freundlichen sozialistischen Grüßen<br />
RunSeb</p>
]]></description><link>https://www.c-plusplus.net/forum/topic/79118/cfile-eine-datei-wählen</link><generator>RSS for Node</generator><lastBuildDate>Sun, 19 Apr 2026 05:23:26 GMT</lastBuildDate><atom:link href="https://www.c-plusplus.net/forum/topic/79118.rss" rel="self" type="application/rss+xml"/><pubDate>Thu, 08 Jul 2004 08:07:36 GMT</pubDate><ttl>60</ttl><item><title><![CDATA[Reply to CFile - eine Datei wählen on Thu, 08 Jul 2004 08:07:36 GMT]]></title><description><![CDATA[<p>Hallo zusammen!</p>
<p>Ich habe einen stinknormalen Dateiauswahldialog mit der Möglichkeit mehrere Dateien auszuwählen. In meinem Prog können bestimmte Dateien geladen werden etc. manchmal mehr, manchmal weniger.</p>
<p>Die gute Nachricht: Es klappt wunderbar wenn ich &gt;= 2 Dateien auswähle.</p>
<p>Die schlechte Nachricht: Wenn ich nur eine Datei öffnen will funzt das net.</p>
<pre><code class="language-cpp">void CDlgPage1::OnButtonHANLaden() 
{ 
    SetModified(TRUE);
    CString pathname;
    TCHAR cFileNames[1024]; 
    memset(cFileNames,0,sizeof(cFileNames)); 
    CFileDialog fileDialog(TRUE,NULL,NULL,OFN_ALLOWMULTISELECT,(&quot;CPA-ErgebnisDatei (*.han)|*.han|&quot;)); 

    fileDialog.m_ofn.lpstrFile = (LPSTR)cFileNames; 
    fileDialog.m_ofn.nMaxFile  = sizeof(cFileNames);

    if (fileDialog.DoModal() == IDOK) 
    { 
        GetFiles(cFileNames); 
        for(int i=1; i&lt;m_str_arrList.GetSize(); i++) 
        {              
            pathname = fileDialog.GetPathName();
            StartLoadData(m_str_arrList.GetAt(i),pathname);
            // hier wird die eigentliche Funktion zum &quot;Laden&quot; der Datei aufger.
            // ich übergebe ihr gleich den Dateinamen und den Pfad 
        } 
    } 
}
void CDlgPage1::GetFiles(TCHAR cFileNames[1024])
{
    CString strFileName; 
    for (int i=0; i&lt;=1024; i++) 
    { 
        strFileName += cFileNames[i]; 
        if(strFileName == &quot;\0&quot;) 
            break; 

        if(cFileNames[i] == '\0') 
        { 
            m_str_arrList.Add(strFileName); 
            strFileName.Empty(); 
        }    
    } 
}
</code></pre>
<p>Meine -noch- Vermutung ist das die Trennung der Files im TCHARFeld schuld ist. Bei mehreren Dateien wird ja \0 sozusagen dazwischengeschrieben. Wenn ich nur eine Datei öffne brauch ja gar keine Trennung vorgenommen werden und deshalb findet er auch kein \0 wieder beim Auslesen des Arrays.</p>
<p>Wer kann mit dem Problem was anfangen. Für Lösungsvorschläge oder Ideen wie ich dieses Problem - in welcher Art und Weise auch immer - in den Griff bekomme bin ich verdammt dankbar.</p>
<p>Mit freundlichen sozialistischen Grüßen<br />
RunSeb</p>
]]></description><link>https://www.c-plusplus.net/forum/post/555768</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/555768</guid><dc:creator><![CDATA[RunSeb]]></dc:creator><pubDate>Thu, 08 Jul 2004 08:07:36 GMT</pubDate></item><item><title><![CDATA[Reply to CFile - eine Datei wählen on Thu, 08 Jul 2004 08:36:08 GMT]]></title><description><![CDATA[<p>Du hast schon den ersten Schritt mit der</p>
<pre><code class="language-cpp">memset(cFileNames, 0, 1024)
</code></pre>
<p>gemacht.</p>
<p>Nun must du auch diese Funktion ändern:</p>
<pre><code class="language-cpp">void CDlgPage1::GetFiles(TCHAR cFileNames[1024])
{
    CString strFileName; 
    for (int i=0; i&lt;1024; i++) 
    { 
        strFileName += cFileNames[i]; 

        if(cFileNames[i] == '\0') 
        { 
            if(strlen(strFileName) == 0) break;
            m_str_arrList.Add(strFileName); 
            strFileName.Empty(); 
        }    
    } 
}
</code></pre>
]]></description><link>https://www.c-plusplus.net/forum/post/555797</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/555797</guid><dc:creator><![CDATA[Squeel]]></dc:creator><pubDate>Thu, 08 Jul 2004 08:36:08 GMT</pubDate></item><item><title><![CDATA[Reply to CFile - eine Datei wählen on Thu, 08 Jul 2004 09:26:11 GMT]]></title><description><![CDATA[<p>Nee, also das tuts auch nicht.<br />
Wenn ich nen Debug mache und mir dieses Feld mit den Dateinamen anschau fällt mir auf das es mit dem Pfad/Directory der Datei beginnt an die gleich die erste ausgewählte Datei angehängt wird. Weitere Dateien werden dann einfach durch \0 getrennt angehängt ( ohne Pfad ). Also der Pfad steht nur einmal am Anfang, das bedeutet auch das erst nach dem ersten Dateinamen eine Trennung erfolgt. Wenn ich jetzt aber nur eine Datei auswähle brauch gar nichts getrennt<br />
werden. <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="😕"
    /> <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="😕"
    /> <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>
]]></description><link>https://www.c-plusplus.net/forum/post/555836</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/555836</guid><dc:creator><![CDATA[RunSeb]]></dc:creator><pubDate>Thu, 08 Jul 2004 09:26:11 GMT</pubDate></item><item><title><![CDATA[Reply to CFile - eine Datei wählen on Thu, 08 Jul 2004 10:32:33 GMT]]></title><description><![CDATA[<p>Hast du es ausprobiert?</p>
<p>Die Funktion, die ich geschrieben habe stopt, wenn nichts mehr da ist... Es solte eigentlich funktionieren.... Versuch es damit:</p>
<pre><code class="language-cpp">void CDlgPage1::GetFiles(TCHAR cFileNames[1024])
{
    CString strFileName; 
    for (int i=0; i&lt;1024; i++) 
    { 
        strFileName += cFileNames[i]; 

        if(cFileNames[i] == '\0') 
        { 
            if(strFileName[0] == 0) break;
            m_str_arrList.Add(strFileName); 
            strFileName.Empty(); 
        }    
    } 
}
</code></pre>
<p>Ich hoffe diesmal klappt es.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/555890</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/555890</guid><dc:creator><![CDATA[Squeel]]></dc:creator><pubDate>Thu, 08 Jul 2004 10:32:33 GMT</pubDate></item><item><title><![CDATA[Reply to CFile - eine Datei wählen on Fri, 09 Jul 2004 08:37:23 GMT]]></title><description><![CDATA[<p>Klar hab ich es probiert. Das was du progst ist verdammt gut gemeint, und auch ne Verkürzung des Progs um 3 Zeilen aber es löst mein Problem mit der Auswahl von nur einer Datei in keinster Weise.<br />
Natürlich habe ich deine Vorschläge auch ausprobiert Squeel, vielen Dank!</p>
<p>Ich hab mich nochmal damit befasst und bin dem Error denke ich etwas näher:<br />
Er liegt in der for-Schleife:</p>
<pre><code class="language-cpp">// blabla....
if (fileDialog.DoModal() == IDOK) 
    { 
        GetFiles(cFileNames); 
        for(int i=1; i&lt;m_str_arrList.GetSize(); i++)  // und zwar hier
        {              
            pathname = fileDialog.GetPathName();
            StartLoadData(m_str_arrList.GetAt(i),pathname);
        } 
    } 
// ...pallaber pallaber...
</code></pre>
<p>i wird eins gesetzt und läuft solang durchs Array bis kleiner GetSize()!!!!! <img
      src="https://www.c-plusplus.net/forum/plugins/nodebb-plugin-emoji/emoji/emoji-one/1f62e.png?v=ab1pehoraso"
      class="not-responsive emoji emoji-emoji-one emoji--face_with_open_mouth"
      title=":open_mouth:"
      alt="😮"
    /><br />
Na, klingelts??? <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="😕"
    /> <img
      src="https://www.c-plusplus.net/forum/plugins/nodebb-plugin-emoji/emoji/emoji-one/1f644.png?v=ab1pehoraso"
      class="not-responsive emoji emoji-emoji-one emoji--face_with_rolling_eyes"
      title=":rolling_eyes:"
      alt="🙄"
    /> <img
      src="https://www.c-plusplus.net/forum/plugins/nodebb-plugin-emoji/emoji/emoji-one/1f62e.png?v=ab1pehoraso"
      class="not-responsive emoji emoji-emoji-one emoji--face_with_open_mouth"
      title=":open_mouth:"
      alt="😮"
    /><br />
Klar gibts da Probleme wenn ich nur eine Datei auswähle!<br />
Dann ist GetSize() nämlich auch eins wie i!<br />
Leider funzt es aber auch genausowenig wenn ich i auf 0 setze oder GetSize() um 1 inkrementiere.<br />
Falls ich was funzendes hinbekomm, post ich es! <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>Mit freundlichen sozialistischen Grüßen <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="👍"
    /><br />
RunSeb</p>
]]></description><link>https://www.c-plusplus.net/forum/post/556621</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/556621</guid><dc:creator><![CDATA[RunSeb]]></dc:creator><pubDate>Fri, 09 Jul 2004 08:37:23 GMT</pubDate></item><item><title><![CDATA[Reply to CFile - eine Datei wählen on Fri, 09 Jul 2004 08:51:18 GMT]]></title><description><![CDATA[<p>Liebe Genossen und Genossinnen,<br />
ich freue mich Ihnen mitteilen zu können das Problem soeben gelöst wurde: <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="🕶"
    /></p>
<pre><code class="language-cpp">memset(cFileNames,0,sizeof(cFileNames)); 
    CFileDialog fileDialog(TRUE,NULL,NULL,OFN_ALLOWMULTISELECT,(&quot;CPA-ErgebnisDatei (*.han)|*.han|&quot;)); 

    fileDialog.m_ofn.lpstrFile = (LPSTR)cFileNames; 
    fileDialog.m_ofn.nMaxFile  = sizeof(cFileNames);

    if (fileDialog.DoModal() == IDOK) 
    { 
        int size = 0;
        GetFiles(cFileNames); 
        size = m_str_arrList.GetSize();
        if ( size == 1 ) 
        {
            pathname = fileDialog.GetPathName();
            StartLoadData(m_str_arrList.GetAt(0),pathname);
        }
        else
        {
            for(int i=1; i&lt;m_str_arrList.GetSize(); i++) 
            {              
                pathname = fileDialog.GetPathName();
                StartLoadData(m_str_arrList.GetAt(i),pathname);
            }
        }
    }
</code></pre>
<p>Is zwar noch nicht besonders elegant, aber es funkt erstmal suuper.<br />
Eigentlich simple!</p>
<p>Danke nochmal,<br />
RunSeb</p>
]]></description><link>https://www.c-plusplus.net/forum/post/556634</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/556634</guid><dc:creator><![CDATA[RunSeb]]></dc:creator><pubDate>Fri, 09 Jul 2004 08:51:18 GMT</pubDate></item></channel></rss>