C++ Builder Snippets  

Liste der Dateien eines Verzeichnisses in eine TStrings-Instanz einlesen:
 
//---------------------------------------------------------------------------
// Funktion ReadDir() schreibt den Inhalt eines Verzeichnisses
// in die übergebene TStrings-Instanz
//---------------------------------------------------------------------------
// Übergabeparameter:
// AnsiString slDirName     - Name des Verzeichnisses
// AnsiString slWildCards   - WildCards für die Dateisuche, z.B.: "*.txt"
// TStrings*  sllFileList   - Zeiger auf die zu füllende TStrings-Instanz
// bool       blNoExtension - Flag "Erweiterung abschneiden"
//---------------------------------------------------------------------------
// Beispielaufrufe:
//
// - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
// /* Kopiert alle INI-Dateien aus dem Verzeichnis c:\windows in c:\backup: */
// TStringList* slFileList = new TStringList;
// AnsiString slPath = "C:\\Windows\\";
// ReadDir(slPath, "*.ini", slFileList, false);
// for(int ilLindex = 0; ilIndex < slFileList->Count; ilIndex++)
//   CopyFile(AnsiString(slPath+slFileList->Strings[ilIndex]).c_str(),
//     AnsiString("C:\\BACKUP\\" + slFileList->Strings[ilIndex])c_str(), false);
// delete slFileList;
//
// - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
// /* schreibt Namen aller Desktop-Verknüpfungen in eine Listbox: */
// ReadDir(GetSystemPath(CSIDL_DESKTOP), "*.lnk", ListBox1->Items, true);
// S. auch Bsp.-Projekt Erstellen, Auslesen und Ändern von Desktop-Verknüpfungen
//---------------------------------------------------------------------------

#include <filectrl.hpp>

void ReadDir(AnsiString slDirName, AnsiString slWildCards,
  TStrings* sllFileList, bool blNoExtension)
{
  TSearchRec stlSearchResult;
  AnsiString slEntry;
  sllFileList -> Clear();
  if(sllFileList != NULL && slDirName != EmptyStr && slWildCards != EmptyStr)
  {
    slDirName = IncludeTrailingBackslash(slDirName);
    try
    {
      AnsiString slSearchDir = slDirName + slWildCards;
      if(FindFirst(slSearchDir, faAnyFile, stlSearchResult) == 0)
      {
        slEntry = blNoExtension && stlSearchResult.Name.Length() ?
          stlSearchResult.Name.SubString(1, stlSearchResult.Name.Length()-
          ExtractFileExt(stlSearchResult.Name).Length()) : stlSearchResult.Name;
        sllFileList -> Add(slEntry);
        while (FindNext(stlSearchResult) == 0)
        {
          slEntry = blNoExtension && stlSearchResult.Name.Length() ?
            stlSearchResult.Name.SubString(1, stlSearchResult.Name.Length()-
            ExtractFileExt(stlSearchResult.Name).Length()) : stlSearchResult.Name;
          sllFileList -> Add(slEntry);
        }
        FindClose(stlSearchResult);
      }
    }
    catch(...) { ; }
  }
}



© '99-2001 by S. Kreutzmann