<?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[Rekursive Dateisuchfunktion übersringt viele Dateien]]></title><description><![CDATA[<pre><code class="language-cpp">void FFSearch(string StartFo)
{
    //Variablen definieren****
    HANDLE FileHandle;
    WIN32_FIND_DATA WFDStr;
    string StartFo2 = &quot;&quot;;
    string StartFoFE = StartFo + &quot;\\*&quot;;     //Startverzeichnis

    //Rekursive Suche Starten
    FileHandle = FindFirstFile(StartFoFE.c_str(),&amp;WFDStr);
    while (FindNextFile(FileHandle,&amp;WFDStr))
    {
        string FFound = WFDStr.cFileName;  //Gefundener Ordner oder Datei

        //Ein Ordner wurde gefunden
        if (WFDStr.dwFileAttributes == FILE_ATTRIBUTE_DIRECTORY &amp;&amp; FFound != &quot;..&quot;  &amp;&amp; FFound !=&quot;.&quot;)
        {
            StartFo2 = StartFo + &quot;\\&quot; + WFDStr.cFileName;
            FFSearch(StartFo2);
        }

		string Name = WFDStr.cFileName;
        //Eine Datei wurde gefunden
        if (WFDStr.dwFileAttributes != FILE_ATTRIBUTE_DIRECTORY &amp;&amp; FFound != &quot;..&quot;  &amp;&amp; FFound !=&quot;.&quot; &amp;&amp; Name.find(&quot;.jpg&quot;) != std::string::npos)
		{
			f&lt;&lt;StartFo + &quot;\\&quot; + WFDStr.cFileName&lt;&lt;endl;
        }
    }
    FindClose(FileHandle);
}
</code></pre>
<p>In dem Beispiel jage ich diese Funktion über meine lokale Festplatte und suche mal einfach nach Fotos. Anschließend soll der Pfad ein eine Textdatei kopiert werden. Das merkwürdige ist nur, dass nicht alle Dateien angezeigt werden. Das Attribut &quot;versteckt&quot; spielt anscheinend keine Rolle da auch Dateien gefunden weren die im system32 Ordner abelegt sind. Die sollten dann ja auch nicht zu fnden sein. Woran kann das bloß liegen?Ich vermisse beispielsweise Bilder aus dem Lokalen User Ordner und so...</p>
<p>Hab natürlich auch zur überpfüfung mal die richtige Windowssuche benutzt und die Spuckt mir das zig fache an Dateien aus.</p>
]]></description><link>https://www.c-plusplus.net/forum/topic/244826/rekursive-dateisuchfunktion-übersringt-viele-dateien</link><generator>RSS for Node</generator><lastBuildDate>Sat, 19 Sep 2026 04:00:23 GMT</lastBuildDate><atom:link href="https://www.c-plusplus.net/forum/topic/244826.rss" rel="self" type="application/rss+xml"/><pubDate>Mon, 06 Jul 2009 11:05:32 GMT</pubDate><ttl>60</ttl><item><title><![CDATA[Reply to Rekursive Dateisuchfunktion übersringt viele Dateien on Mon, 06 Jul 2009 11:05:32 GMT]]></title><description><![CDATA[<pre><code class="language-cpp">void FFSearch(string StartFo)
{
    //Variablen definieren****
    HANDLE FileHandle;
    WIN32_FIND_DATA WFDStr;
    string StartFo2 = &quot;&quot;;
    string StartFoFE = StartFo + &quot;\\*&quot;;     //Startverzeichnis

    //Rekursive Suche Starten
    FileHandle = FindFirstFile(StartFoFE.c_str(),&amp;WFDStr);
    while (FindNextFile(FileHandle,&amp;WFDStr))
    {
        string FFound = WFDStr.cFileName;  //Gefundener Ordner oder Datei

        //Ein Ordner wurde gefunden
        if (WFDStr.dwFileAttributes == FILE_ATTRIBUTE_DIRECTORY &amp;&amp; FFound != &quot;..&quot;  &amp;&amp; FFound !=&quot;.&quot;)
        {
            StartFo2 = StartFo + &quot;\\&quot; + WFDStr.cFileName;
            FFSearch(StartFo2);
        }

		string Name = WFDStr.cFileName;
        //Eine Datei wurde gefunden
        if (WFDStr.dwFileAttributes != FILE_ATTRIBUTE_DIRECTORY &amp;&amp; FFound != &quot;..&quot;  &amp;&amp; FFound !=&quot;.&quot; &amp;&amp; Name.find(&quot;.jpg&quot;) != std::string::npos)
		{
			f&lt;&lt;StartFo + &quot;\\&quot; + WFDStr.cFileName&lt;&lt;endl;
        }
    }
    FindClose(FileHandle);
}
</code></pre>
<p>In dem Beispiel jage ich diese Funktion über meine lokale Festplatte und suche mal einfach nach Fotos. Anschließend soll der Pfad ein eine Textdatei kopiert werden. Das merkwürdige ist nur, dass nicht alle Dateien angezeigt werden. Das Attribut &quot;versteckt&quot; spielt anscheinend keine Rolle da auch Dateien gefunden weren die im system32 Ordner abelegt sind. Die sollten dann ja auch nicht zu fnden sein. Woran kann das bloß liegen?Ich vermisse beispielsweise Bilder aus dem Lokalen User Ordner und so...</p>
<p>Hab natürlich auch zur überpfüfung mal die richtige Windowssuche benutzt und die Spuckt mir das zig fache an Dateien aus.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1737858</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1737858</guid><dc:creator><![CDATA[secondsun]]></dc:creator><pubDate>Mon, 06 Jul 2009 11:05:32 GMT</pubDate></item><item><title><![CDATA[Reply to Rekursive Dateisuchfunktion übersringt viele Dateien on Mon, 06 Jul 2009 12:05:35 GMT]]></title><description><![CDATA[<p>z.B. unterschlägst Dein Code alles, was von FindFirstFile() zurückgeliefert wird.</p>
<p>Besser sowas wie:</p>
<pre><code>HANDLE fHandle;
WIN32_FIND_DATA wfd;

fHandle=FindFirstFile(&quot;C:\\*&quot;, &amp;wfd);
do
{
  if (wfd.dwFileAttributes &amp; FILE_ATTRIBUTE_DIRECTORY)
  {
     if (wfd.cFileName ungleich &quot;.&quot; &amp;&amp; wfd.cFileName ungleich &quot;..&quot;)
     {
       ...
     }
  }
  else
  {
     ...
  }
}
while (FindNextFile(fHandle,&amp;wfd));
FindClose(fHandle);
</code></pre>
<p>Anm:: 'ungleich' ist natürlich noch durch die passende Funktion zu ersetzen, op != tut 's ja hier nicht, da cFilename ein TCHAR Array ist</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1737899</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1737899</guid><dc:creator><![CDATA[jencas]]></dc:creator><pubDate>Mon, 06 Jul 2009 12:05:35 GMT</pubDate></item><item><title><![CDATA[Reply to Rekursive Dateisuchfunktion übersringt viele Dateien on Mon, 06 Jul 2009 12:33:57 GMT]]></title><description><![CDATA[<p>danke erstmal für deine antowort.<br />
Also das erste kann ich ja noch verstehen. Hab es selber übersehen. Kommt vom Copy&amp;Past;-)</p>
<p>Allerding habe ich erstens was gegen &quot;wfd.cFileName ungleich &quot;..&quot; &quot; weil das funktioniert wunderwar. Hab es mit einer Datei ausprobiert und es funktioniert.</p>
<p>Was ich jetzt aber noch ein bisschen verwirrend finde ist, dass aber immer noch das selbe bei rauskommt. Er überspring immernoch jede Menge Dateien.Um genau zu sein alle die er vorher auch übersprungen hat. Hab beide TextFiles vorher abgespeichert.</p>
<p>Also kann das mit dem Vergleich gar nicht mal so falsch sein!Den Dateien vom gewünschten Datentyp findet er ja</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1737919</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1737919</guid><dc:creator><![CDATA[secondsun]]></dc:creator><pubDate>Mon, 06 Jul 2009 12:33:57 GMT</pubDate></item><item><title><![CDATA[Reply to Rekursive Dateisuchfunktion übersringt viele Dateien on Mon, 06 Jul 2009 12:55:05 GMT]]></title><description><![CDATA[<p>1. Grundsätzlich falsches Forum, sowas gehört eher in die WinAPI.<br />
2. Du findest mit dieser Suche keine *.JPG, *.jpeg und *.JPEG oder andere Schreibweisen. Es wird wirklich nur nach *.jpg gesucht, also alles Kleinbuchstaben.<br />
3. Was ist der Startordner, welcher du angibst? Und wie machst du das?<br />
4. Als was bist du eingeloggt? Admin? User? Mit welchen Rechten?</p>
<p>Grüssli</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1737930</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1737930</guid><dc:creator><![CDATA[Dravere]]></dc:creator><pubDate>Mon, 06 Jul 2009 12:55:05 GMT</pubDate></item><item><title><![CDATA[Reply to Rekursive Dateisuchfunktion übersringt viele Dateien on Mon, 06 Jul 2009 13:34:54 GMT]]></title><description><![CDATA[<pre><code class="language-cpp">FFSearch(&quot;C:&quot;);
</code></pre>
<p>So stoße ich die Suche an. Ich habe auf de Rechne voll Rechte. Und wenn ich in der Suche ja auch die Bilder finden bzw öffnen kann dass sollte es die Anwendung auf jeden Fall tun.<br />
Das mit der Groß/Kleinschreibung habe ich geändert. War mir zwar noch nicht bewusst aber es ist gut zu wissen.</p>
<p>Geändert hat sich aber an meinem Problem nichts. Vielleicht wollt ihr ja noch wissen, dass ich Windows XP Pro mit dem SP3 drin habe und das Programm mit dem VS2008 Pro kompiliere.</p>
<p>Hat jemand schon mal von euch versucht, meinen Code zu kompilieren bz auszufhren? Wenn ja, was bekommt ihr für ein Ergebnis?</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1737944</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1737944</guid><dc:creator><![CDATA[secondsun]]></dc:creator><pubDate>Mon, 06 Jul 2009 13:34:54 GMT</pubDate></item><item><title><![CDATA[Reply to Rekursive Dateisuchfunktion übersringt viele Dateien on Mon, 06 Jul 2009 15:23:27 GMT]]></title><description><![CDATA[<pre><code class="language-cpp">// WFDStr.dwFileAttributes == FILE_ATTRIBUTE_DIRECTORY
bool isDirectory = (WFDStr.dwFileAttributes &amp; FILE_ATTRIBUTE_DIRECTORY) != 0;
//...
</code></pre>
<p>BTW: deine Namensgebung (Variablen) finde ich grässlich. Willst du dich nicht lieber an etwas halten was auch andere Programmierer verwenden (z.B. myVariable, myOtherVariable oder auch my_variable, my_other_variable)? Und vielleicht Namen vergeben die ohne kryptische Abkürzungen auskommen?</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1737999</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1737999</guid><dc:creator><![CDATA[hustbaer]]></dc:creator><pubDate>Mon, 06 Jul 2009 15:23:27 GMT</pubDate></item><item><title><![CDATA[Reply to Rekursive Dateisuchfunktion übersringt viele Dateien on Mon, 06 Jul 2009 19:54:38 GMT]]></title><description><![CDATA[<p>super:-) jetzt findet er auch alles was er finden soll:-) ich super, danke;-)</p>
<p>ja ich weiß..meine namen sind nicht so sonderlich aussagekräftig aber während ich ein bisschen rum teste reicht mir das vollkommend.<br />
wenn ich aber weiß, dasses größer wird verwende ich schon andere namen;-)</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1738188</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1738188</guid><dc:creator><![CDATA[secondsun]]></dc:creator><pubDate>Mon, 06 Jul 2009 19:54:38 GMT</pubDate></item><item><title><![CDATA[Reply to Rekursive Dateisuchfunktion übersringt viele Dateien on Tue, 07 Jul 2009 00:22:44 GMT]]></title><description><![CDATA[<p>secondsun schrieb:</p>
<blockquote>
<p>super:-) jetzt findet er auch alles was er finden soll:-) <strong>ich super, danke;-)</strong></p>
</blockquote>
<p>Nein, ICH super, und gerne <img
      src="https://www.c-plusplus.net/forum/plugins/nodebb-plugin-emoji/emoji/emoji-one/1f603.png?v=ab1pehoraso"
      class="not-responsive emoji emoji-emoji-one emoji--grinning_face_with_big_eyes"
      title=":D"
      alt="😃"
    /></p>
<blockquote>
<p>ja ich weiß..meine namen sind nicht so sonderlich aussagekräftig aber während ich ein bisschen rum teste reicht mir das vollkommend.<br />
wenn ich aber weiß, dasses größer wird verwende ich schon andere namen;-)</p>
</blockquote>
<p>Es passiert verdammt oft, dass Code der beim &quot;Rumtesten&quot; entstanden ist, in grössere Projekte übernommen wird.</p>
<p>Davon abgesehen: viele Programmierer schaffen es nicht, wenns wirklich um was geht auch &quot;brav&quot; umzuschalten. Auch das führt dazu dass sämtliche &quot;Unsitten&quot; die man sich beim &quot;Rumtesten&quot; erlaubt, früher oder später auch in Produktiv-Code landen.</p>
<p>-&gt; immer halbwegs &quot;sauberen&quot; Code schreiben ist das einzig Wahre.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1738278</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1738278</guid><dc:creator><![CDATA[hustbaer]]></dc:creator><pubDate>Tue, 07 Jul 2009 00:22:44 GMT</pubDate></item><item><title><![CDATA[Reply to Rekursive Dateisuchfunktion übersringt viele Dateien on Tue, 07 Jul 2009 00:30:18 GMT]]></title><description><![CDATA[<p>p.S.: du solltest auch berücksichtigen was jencas geschrieben hat (dessen Code im Übrigen auch schon den korrekten &quot;is directory&quot; Test enthalten hat):</p>
<p>jencas schrieb:</p>
<blockquote>
<p>z.B. unterschlägst Dein Code alles, was von FindFirstFile() zurückgeliefert wird.</p>
<p>(...)</p>
</blockquote>
]]></description><link>https://www.c-plusplus.net/forum/post/1738279</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1738279</guid><dc:creator><![CDATA[hustbaer]]></dc:creator><pubDate>Tue, 07 Jul 2009 00:30:18 GMT</pubDate></item><item><title><![CDATA[Reply to Rekursive Dateisuchfunktion übersringt viele Dateien on Tue, 07 Jul 2009 07:17:27 GMT]]></title><description><![CDATA[<pre><code class="language-cpp">ich super, danke;-)
</code></pre>
<p>Hoppla..Da war ich mit meinen Gedanken ganz wo anders würde ich sagen. Bestimmt weil es mal endlich funktioniert hat;-). Ich glaube ich wollte eigentlich nur sagen &quot;ist super, danke;-) &quot; oder so. Ist auch wurscht. Dafür liefer ich mal eben den gesamten Code mit vernünftigen Variablennamen;-) Dann sind alle zufrieden und jeder kann es sich kopieren;-)</p>
<pre><code class="language-cpp">void Rekursive_Dateisuchfunktion(string StartOrdner)
{
    //Variablen definieren****
    HANDLE DateiHandle;
    WIN32_FIND_DATA DateiStruktur;
    string StartFo2 = &quot;&quot;;
    string StartFoFE = StartOrdner + &quot;\\*&quot;;     //Startverzeichnis

    //Rekursive Suche Starten
    DateiHandle = FindFirstFile(StartFoFE.c_str(),&amp;DateiStruktur);
    do
    {
        string Ordner_oder_Datei = DateiStruktur.cFileName;  //Gefundener Ordner oder Datei

        //Ein Ordner wurde gefunden
        if (((DateiStruktur.dwFileAttributes &amp; FILE_ATTRIBUTE_DIRECTORY) != 0 ) &amp;&amp; Ordner_oder_Datei != &quot;..&quot;  &amp;&amp; Ordner_oder_Datei !=&quot;.&quot;)
        {
	        f &lt;&lt;StartOrdner + &quot;\\&quot; + DateiStruktur.cFileName&lt;&lt;endl;
            StartFo2 = StartOrdner + &quot;\\&quot; + DateiStruktur.cFileName;
            Rekursive_Dateisuchfunktion(StartFo2);
        }

        //Eine Datei wurde gefunden
        if (((DateiStruktur.dwFileAttributes &amp; FILE_ATTRIBUTE_DIRECTORY) == 0 ) &amp;&amp; Ordner_oder_Datei != &quot;..&quot;  &amp;&amp; Ordner_oder_Datei != &quot;.&quot;)
		{
             f &lt;&lt;StartOrdner + &quot;\\&quot; + DateiStruktur.cFileName&lt;&lt;endl;
		}
    }
	while(FindNextFile(DateiHandle,&amp;DateiStruktur));
    FindClose(DateiHandle);
}
</code></pre>
<p>Für &quot;f&quot; wurde natürlich ein fstream genommen. Sollte alles passen und danke nochmal;-)</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1738322</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1738322</guid><dc:creator><![CDATA[secondsun]]></dc:creator><pubDate>Tue, 07 Jul 2009 07:17:27 GMT</pubDate></item><item><title><![CDATA[Reply to Rekursive Dateisuchfunktion übersringt viele Dateien on Tue, 07 Jul 2009 07:51:28 GMT]]></title><description><![CDATA[<p>secondsun schrieb:</p>
<blockquote>
<p>Allerding habe ich erstens was gegen &quot;wfd.cFileName ungleich &quot;..&quot; &quot; weil das funktioniert wunderwar. Hab es mit einer Datei ausprobiert und es funktioniert.</p>
</blockquote>
<p>Ja, weil Du den Dateinamen ja vorher einem std::string zuweist und dieser über einen vernünftigen op != verfügt.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1738339</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1738339</guid><dc:creator><![CDATA[jencas]]></dc:creator><pubDate>Tue, 07 Jul 2009 07:51:28 GMT</pubDate></item><item><title><![CDATA[Reply to Rekursive Dateisuchfunktion übersringt viele Dateien on Tue, 07 Jul 2009 08:01:46 GMT]]></title><description><![CDATA[<pre><code>void Rekursive_Dateisuchfunktion(string StartOrdner)
{
    //Variablen definieren****
    HANDLE DateiHandle;
    WIN32_FIND_DATA DateiStruktur;
    string StartFo2 = &quot;&quot;;
    string StartFoFE = StartOrdner + &quot;\\*&quot;;     //Startverzeichnis

    //Rekursive Suche Starten
    DateiHandle = FindFirstFile(StartFoFE.c_str(),&amp;DateiStruktur);
    do
    {
        string Ordner_oder_Datei = DateiStruktur.cFileName;  //Gefundener Ordner oder Datei

        //Ein Ordner wurde gefunden
        if ((DateiStruktur.dwFileAttributes &amp; FILE_ATTRIBUTE_DIRECTORY) != 0 )
        {
            if (Ordner_oder_Datei != &quot;.&quot; &amp;&amp; Ordner_oder_Datei != &quot;..&quot;)
            {
                f &lt;&lt;StartOrdner + &quot;\\&quot; + DateiStruktur.cFileName&lt;&lt;endl;
                StartFo2 = StartOrdner + &quot;\\&quot; + DateiStruktur.cFileName;
                Rekursive_Dateisuchfunktion(StartFo2);
            }
        }
        else
        {
             f &lt;&lt;StartOrdner + &quot;\\&quot; + DateiStruktur.cFileName&lt;&lt;endl;
        }
    }
    while(FindNextFile(DateiHandle,&amp;DateiStruktur));
    FindClose(DateiHandle);
}
</code></pre>
<p>würde ich persönlich bevorzugen. Erspart<br />
a) einen unnötigen Vergleich von DateiStruktur.dwFileAttributes und<br />
b) eliminiert den unnötigen Vergleich von Dateinamen gegen &quot;.&quot; und &quot;..&quot;</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1738344</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1738344</guid><dc:creator><![CDATA[jencas]]></dc:creator><pubDate>Tue, 07 Jul 2009 08:01:46 GMT</pubDate></item></channel></rss>