<?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[In ein TTreeView alle Verzeichnisse eintragen]]></title><description><![CDATA[<p>Hallo zusammen,</p>
<p>ich möchte gerne eine Art Windows-Commander programmieren in dem ich in einem TTreeView alle aktuellen Laufwerke und die Unterverzeichnisse aufgelistet bekomme.<br />
In einem TListView möchte ich dann nur Dateien anzeigen mit einer Bestimmten Extension.</p>
<p>Mein Problem ist, das ich nicht so recht weis wie ich alle Laufwerke und SubDirs in das TTreeView bekomme. Mit FindFirst und FindNext??? Außerdem hab ich's nicht so mit Rekursiven Aufrufen.</p>
<p>Vielleicht hat ja jemand schon einen Quellcode der genau das macht was ich will!?</p>
<p>Vielen Dank!</p>
<p>Gruß Nontschew</p>
]]></description><link>https://www.c-plusplus.net/forum/topic/88860/in-ein-ttreeview-alle-verzeichnisse-eintragen</link><generator>RSS for Node</generator><lastBuildDate>Sun, 05 Jul 2026 17:08:31 GMT</lastBuildDate><atom:link href="https://www.c-plusplus.net/forum/topic/88860.rss" rel="self" type="application/rss+xml"/><pubDate>Wed, 13 Oct 2004 18:27:51 GMT</pubDate><ttl>60</ttl><item><title><![CDATA[Reply to In ein TTreeView alle Verzeichnisse eintragen on Wed, 13 Oct 2004 18:27:51 GMT]]></title><description><![CDATA[<p>Hallo zusammen,</p>
<p>ich möchte gerne eine Art Windows-Commander programmieren in dem ich in einem TTreeView alle aktuellen Laufwerke und die Unterverzeichnisse aufgelistet bekomme.<br />
In einem TListView möchte ich dann nur Dateien anzeigen mit einer Bestimmten Extension.</p>
<p>Mein Problem ist, das ich nicht so recht weis wie ich alle Laufwerke und SubDirs in das TTreeView bekomme. Mit FindFirst und FindNext??? Außerdem hab ich's nicht so mit Rekursiven Aufrufen.</p>
<p>Vielleicht hat ja jemand schon einen Quellcode der genau das macht was ich will!?</p>
<p>Vielen Dank!</p>
<p>Gruß Nontschew</p>
]]></description><link>https://www.c-plusplus.net/forum/post/628129</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/628129</guid><dc:creator><![CDATA[Nontschew]]></dc:creator><pubDate>Wed, 13 Oct 2004 18:27:51 GMT</pubDate></item><item><title><![CDATA[Reply to In ein TTreeView alle Verzeichnisse eintragen on Wed, 13 Oct 2004 19:24:32 GMT]]></title><description><![CDATA[<p>Siehe <a href="http://www.c-plusplus.net/forum/viewtopic.php?t=39305&amp;sid=c5f5beb2d1182daeae763a800aae07c8" rel="nofollow">FAQ</a> unter &quot;Dateien+Verzeichnisse&quot;.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/628189</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/628189</guid><dc:creator><![CDATA[Jansen]]></dc:creator><pubDate>Wed, 13 Oct 2004 19:24:32 GMT</pubDate></item><item><title><![CDATA[Reply to In ein TTreeView alle Verzeichnisse eintragen on Fri, 15 Oct 2004 04:39:15 GMT]]></title><description><![CDATA[<p>Hallo,</p>
<p>zu diesem Thema sind leider keine Einträge vorhanden...</p>
<p>Mirko</p>
]]></description><link>https://www.c-plusplus.net/forum/post/629094</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/629094</guid><dc:creator><![CDATA[Nontschew]]></dc:creator><pubDate>Fri, 15 Oct 2004 04:39:15 GMT</pubDate></item><item><title><![CDATA[Reply to In ein TTreeView alle Verzeichnisse eintragen on Fri, 15 Oct 2004 05:42:56 GMT]]></title><description><![CDATA[<p>Na ja, irgendwie sind die Beiträge wohl verloren gegangen. Aber such mal hier im Forum in den Postings der letzten 3 Tage. Da war so etwas auch dabei.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/629102</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/629102</guid><dc:creator><![CDATA[[[global:guest]]]]></dc:creator><pubDate>Fri, 15 Oct 2004 05:42:56 GMT</pubDate></item><item><title><![CDATA[Reply to In ein TTreeView alle Verzeichnisse eintragen on Fri, 15 Oct 2004 08:30:41 GMT]]></title><description><![CDATA[<p>Danke für den Hinweis, das Problem mit den verschwundenen FAQ-Einträgen wird untersucht.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/629197</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/629197</guid><dc:creator><![CDATA[Jansen]]></dc:creator><pubDate>Fri, 15 Oct 2004 08:30:41 GMT</pubDate></item><item><title><![CDATA[Reply to In ein TTreeView alle Verzeichnisse eintragen on Fri, 15 Oct 2004 09:36:59 GMT]]></title><description><![CDATA[<p>OK, vielen Dank für den Hinweis. Ich hoffe Ihr bekommt das mit den Einträgen in den FAQ wieder hin! Ist sicher nicht schlecht. Übrigens sorry das ich da nicht gleich nach geschaut habe!</p>
<p>Viele Grüße</p>
]]></description><link>https://www.c-plusplus.net/forum/post/629262</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/629262</guid><dc:creator><![CDATA[Nontschew]]></dc:creator><pubDate>Fri, 15 Oct 2004 09:36:59 GMT</pubDate></item><item><title><![CDATA[Reply to In ein TTreeView alle Verzeichnisse eintragen on Mon, 18 Oct 2004 15:46:42 GMT]]></title><description><![CDATA[<p>Sorry aber die Einträge in der FAQ sind immer noch nicht da. <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="😕"
    /> Vielleicht kann mir ja jemand weiterhelfen der das Problem schon ausprogrammiert hat!? Vielleicht kann mir ja derjenige den Quelltext posten...? Wäre echt super!</p>
<p>Vielen Dank und schöne Grüße<br />
Mirko</p>
]]></description><link>https://www.c-plusplus.net/forum/post/631744</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/631744</guid><dc:creator><![CDATA[Nontschew]]></dc:creator><pubDate>Mon, 18 Oct 2004 15:46:42 GMT</pubDate></item><item><title><![CDATA[Reply to In ein TTreeView alle Verzeichnisse eintragen on Mon, 18 Oct 2004 20:15:56 GMT]]></title><description><![CDATA[<p>Klar geht das! <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>In Form1 brauchst Du<br />
1.) Button1 (TButton)<br />
2. LB1 (TListbox)<br />
3. LB2 (TListbox)</p>
<pre><code>Boolean __fastcall LikeString(AnsiString Text, AnsiString Mask,Boolean IC)
{
  int i,j;
  int Min,Max;
  AnsiString CmpStr;
  if (IC)
  {
    Text=Text.UpperCase();
    Mask=Mask.UpperCase();
  }
  i=1;
  Min=0;
  if (Mask.Length()==0)
    return(false);
  Max=0;
  while (i&lt;=Mask.Length())
  { if (Mask[i]=='?')
    { Min++;
      Max++;
    }
    else
    { if (Mask[i]=='*')
      { Max=255;
      }
      else
        break;
    }
    i++;
  }
  j=i;
  while ((j&lt;=Mask.Length())&amp;&amp;(Mask[j]!='*')&amp;&amp;(Mask[j]!='?'))
  { j++;
  }
  CmpStr=Mask.SubString(i,j-i);
  if (CmpStr.Length()&gt;0)
  { if ((Text.AnsiPos(CmpStr)&lt;=Min)||
        (Text.AnsiPos(CmpStr)&gt;Max+1))
      return(false);
    else
    { if (((Text.AnsiPos(CmpStr)+CmpStr.Length()-1)&lt;Text.Length())||
          ((Mask.AnsiPos(CmpStr)+CmpStr.Length()-1)&lt;Mask.Length()))
        return(LikeString(Text.SubString(Text.AnsiPos(CmpStr)+1,255),Mask.SubString(Mask.AnsiPos(CmpStr)+1,255),IC));
      else
        return(true);
    }
  }
  else
  { if ((Text.Length()&gt;=Min)&amp;&amp;(Text.Length()&lt;=Max))
      return(true);
    else
      return(false);
  }
}
//---------------------------------------------------------------------------
void __fastcall TForm1::FS(AnsiString P, AnsiString FileMask, AnsiString Extension)
{
  Boolean Rekursion=true;
  AnsiString Verz;
  char drive[MAXDRIVE];
  char dir[MAXDIR];
  char file[MAXFILE];
  char ext[MAXEXT];
  AnsiString LnkFName;
  TSearchRec f;
  TStringList *SubDirs= new TStringList;
  int FFRes;
  int i,j;
//  Priority=tpHigher;
  Verz=P;
  LB2-&gt;Items-&gt;Add(Verz);
  if (Verz.SubString(Verz.Length()-1,2).AnsiCompare(&quot;:\\&quot;)==0)
    Verz.operator +=( &quot;*.*&quot;);
  else
    Verz.operator +=( &quot;\\*.*&quot;);
  SubDirs-&gt;Clear();
  if (Rekursion)
    FFRes=FindFirst(Verz,0x30+7,f);   /* Dateien und Verzeichnisse suchen */
  else
    FFRes=FindFirst(Verz,0x20,f);   /* nur Dateien suchen               */
  Verz=P;
  if (FFRes==0)
  {
    while(FFRes==0)                   /* bis letzter Eintrag              */
    {
      if ((f.Attr&amp;0x10)!=0x10)        /* kein Verzeichnis, Datei          */
      {
        if (true) //FSearchMode==smFile)
        {
          fnsplit(f.Name.c_str(),drive,dir,file,ext);
          if (LikeString(file,FileMask,true))
          {
            if (StrIComp(ext,Extension.c_str())==0)
            {
               LB1-&gt;Items-&gt;Add(f.Name);
            }
          }
        }
      }
      else
      {
        if (f.Name.AnsiPos(&quot;.&quot;)!=1)
        {
          if (Rekursion)
            SubDirs-&gt;Add(f.Name);
        }
      }
      FFRes=FindNext(f);          /* naechstes Verzeichnis suchen */
    }
    FindClose(f);
  }
  for (i=0;i&lt;SubDirs-&gt;Count;i++)
  {
    Verz=P;
    if (Verz.SubString(Verz.Length()-1,2).AnsiCompare(&quot;:\\&quot;)!=0)
      Verz.operator +=( &quot;\\&quot;);
    Verz.operator +=(SubDirs-&gt;Strings[i]);
    FS(Verz,FileMask,Extension);
  }
  delete SubDirs;
}
void __fastcall TForm1::Button1Click(TObject *Sender)
{
  AnsiString LW=&quot;C:\\&quot;;
  LB1-&gt;Clear();
  LB2-&gt;Clear();
  for (LW[1]='C';LW[1]&lt;='Z';LW[1]++)
    FS(LW,&quot;A*&quot;,&quot;.bmp&quot;);
}
//---------------------------------------------------------------------------
</code></pre>
]]></description><link>https://www.c-plusplus.net/forum/post/632011</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/632011</guid><dc:creator><![CDATA[DerAltenburger]]></dc:creator><pubDate>Mon, 18 Oct 2004 20:15:56 GMT</pubDate></item><item><title><![CDATA[Reply to In ein TTreeView alle Verzeichnisse eintragen on Tue, 19 Oct 2004 07:00:09 GMT]]></title><description><![CDATA[<p>Nontschew,</p>
<p>hier noch eine <a href="http://www.c-plusplus.net/forum/viewtopic.php?t=67771&amp;start=10" rel="nofollow">API Version</a>.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/632140</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/632140</guid><dc:creator><![CDATA[dschensky]]></dc:creator><pubDate>Tue, 19 Oct 2004 07:00:09 GMT</pubDate></item><item><title><![CDATA[Reply to In ein TTreeView alle Verzeichnisse eintragen on Tue, 19 Oct 2004 08:14:46 GMT]]></title><description><![CDATA[<p>Hi,</p>
<p>also IMHO ist hier das selbständige Suchen und Eintragen der Verzeichnisse (Rekursion usw.) nicht nötig. Man verbessere mich wenn ich Mist rede <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 />
Es geht auch mit der IDE - Karteikarte Win 3.1:</p>
<p>a) DriveComboBox1<br />
b) DirectoryListBox1<br />
c) FileListBox1<br />
d) FilterComboBox1</p>
<p>im Objektinspektor:</p>
<ol>
<li>DriveComboBox1 Eigenschaft DirList auf DirectoryListbox1 setzen</li>
<li>DirectoryListBox1 Eigenschaft FileList auf FileListBox1 setzen</li>
<li>FilterComboBox1 Eigenschaft FileList auf FileListBox1 setzen und unter Filter die gewünschten eintragen.</li>
</ol>
<p>Voilà, das reicht eigentlich schon.</p>
<p>Eventuell noch einen Button dazu um einen Pfad über einen OpenDialog auswählen zu können. Also Button und OpenDialog hinzufügen und</p>
<pre><code>void __fastcall TForm1::BitBtnTPathClick(TObject *Sender)
{
  if(OpenDialog1-&gt;Execute()) DirectoryListBox2-&gt;Directory=ExtractFilePath(OpenDialog1-&gt;FileName);
}
//---------------------------------------------------------------------------
</code></pre>
<p>Ggf Beim OpenDialog noch Title eintragen und Filter auf Verzeichnisse|*.</p>
<p>Hoffe ich hab jetzt nix vergessen... is echt ein Kinderspiel. In der Borland-Hilfe ist auch irgendwo ein super Beispiele genau dazu gewesen.</p>
<p>mfG</p>
<p>robi1806</p>
]]></description><link>https://www.c-plusplus.net/forum/post/632174</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/632174</guid><dc:creator><![CDATA[robi1806]]></dc:creator><pubDate>Tue, 19 Oct 2004 08:14:46 GMT</pubDate></item><item><title><![CDATA[Reply to In ein TTreeView alle Verzeichnisse eintragen on Tue, 19 Oct 2004 11:07:35 GMT]]></title><description><![CDATA[<p>robi1806,</p>
<p>robi1806 schrieb:</p>
<blockquote>
<p>Es geht auch mit der IDE - Karteikarte Win 3.1: ...</p>
</blockquote>
<p>ja, das hängt davon ab, was genau benötigt wird. Die DirectoryListBox hat den Nachteil, daß sie immer nur den Teilbaum anzeigt, in welchem man sich gerade befindet.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/632306</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/632306</guid><dc:creator><![CDATA[dschensky]]></dc:creator><pubDate>Tue, 19 Oct 2004 11:07:35 GMT</pubDate></item></channel></rss>