На главную Наши проекты:
Журнал   ·   Discuz!ML   ·   Wiki   ·   DRKB   ·   Помощь проекту
ПРАВИЛА FAQ Помощь Участники Календарь Избранное RSS
msm.ru
[!] Как относитесь к модерированию на этом форуме? Выскажите свое мнение здесь
  
> Опять папки
    Привет Всем!!!
    ЛЮДИ подскажите
    Использовать функции FindFirstFile и FindNextFile.
    как их надо применить так чтобы можно было открыть в
    FileListBox1 или DirectoryListBox1 папку "cfg"
    она находится в директории программы (папка cfg)
      Lucifer
      ЧТО В ФАК

      ПОСМОТРЕТЬ СМОТРЕЛ
      :ph34r:
        ExpandedWrap disabled
            AnsiString Path = ExtractFilePath( Application->ExeName ) + "cfg\\*.*";
            TSearchRec sr;
            int iAttributes = faAnyFile;
           
            int done = FindFirst( Path, iAttributes, sr );
            while( !done ){
              Memo1->Lines->Add( sr.Name );
              done = FindNext( sr );
            }
            FindClose( sr );

        ?
        Сообщение отредактировано: Sazabis -
          Вот, я когда-то писал. Расширение .lng только для примера.
          Для поиска файлов существуют следующие функции: FindFirst, FindNext, FindClose. Поиск непосредственно начинается вызовом FindFirst с нужными параметрами. А они у нее такие. Первый - путь, AnsiString. Это в какой папке искать плюс маска имени файла. Если мы ищем в текущей папке, то глобальный путь указывать не надо. Первый параметр включает и маску файлов, подходящих под критерии поиска. Она может содержать такие символы, как * или ?, что обозначает, соответственно, что может быть сколько угодно символов на этом месте или только один. Например, если мы ищем все файлы с расширением lng, то маска будет выглядеть так: *.lng. То есть подходят все файлы, у которых расширение обязательно lng. Это понятно. Второй параметр - аттрибуты. Так, можно искать либо только директории, либо скрытые файлы, либо еще несколько вариантов - то есть дополнительный критерий отсеивания. Можно искать, например, только скрытые файлы, директории, системные и так далее. Чаще всего надо искать все файлы подряд, поэтому ставим аттрибут faAnyFile. И, наконец, последний, третий параметр - адрес структуры типа TSearchRec. Эта структура, служащая для поиска файлов, имеет следующий синтаксис:
          ExpandedWrap disabled
            #include <SysUtils.hpp>
            struct TSearchRec
            {
             int Time;        // время создания файла
             int Size;        // размер файла в байтах
             int Attr;        // аттрибуты файла
             AnsiString Name; // имя его
             int ExcludeAttr;
             int FindHandle;
             _WIN32_FIND_DATAA FindData;
            };
          Когда файл найден, его данные записываются в эту переменную и оттуда их можно читать, анализировать и т.д. Но это только начальная стадия поиска. Далее немного попроще. Функция FindNext (а именно она служит для продолжения поиска) принимает только один параметр - опять же указатель на структуру, ту же самую, TSearchRec. Туда опять же при положительном исходе заносятся данные по текущему файлу. Функции FindFirst и FindNext при успешном завершении возвращают 0. И, наконец, для освобождения ресурсов, заканчивать надо FindClose. Опять передавая туда TSearchRec. Собственно, вот что мы попытаемся сделать. Пусть в нашем каталоге есть много файлов *.lng. При создании формы они все ищутся их имена заносятся в ListBox1. Это должно выглядеть где-то так.
          ExpandedWrap disabled
            TSearchRec sr;  // создание экземляра класса для поиска файлов
            if(FindFirst("*.lng",faAnyFile,sr))  // если файл не найден
              return;                            // выходим
            ListBox1->Items->Add(sr.Name);       // если нашли, добавляем его имя в ЛистБокс
            while(!FindNext(sr))                 // пока файлы такие еще есть
              ListBox1->Items->Add(sr.Name);     // пока находим, добавляем
            FildClose(sr);                       // заканчиваем поиск
          Вот, собственно, и все. Старался объяснить как можно понятнее ;)
            Sazabis
            Спасибо но в приведенном тобой коде есть одно
            но я спрашивал:
            в FileListBox1 или DirectoryListBox1

            а не мемо1 но ответ хороший … :rolleyes:



            KAV
            да ты писатель прям написано все SUPER !!!
            лови плюсик
            :D
              Я не понял, а чем
              ExpandedWrap disabled
                AnsiString szPath = ExtractFileDir(Application->ExeName) + "//cfg";
                DirectoryListBox1->Directory = szPath;
                FileListBox1->Directory = szPath;

              не катит?

              Добавлено в :
              И зачем тебе FindFirst(Next)File?
              Сообщение отредактировано: Uncle_Bob -
                Uncle_Bob
                Спасибо но уже дошло!!! :blink:
                0 пользователей читают эту тему (0 гостей и 0 скрытых пользователей)
                0 пользователей:


                Рейтинг@Mail.ru
                [ Script execution time: 0,0961 ]   [ 16 queries used ]   [ Generated: 14.06.25, 08:39 GMT ]