Модераторы: feodorv, GremlinProg, xvr, Fixin
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Поиск файлов 
:(
    Опции темы
kamerrer
Дата 29.8.2007, 16:52 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 14
Регистрация: 27.6.2007

Репутация: нет
Всего: нет



Пишу на билдере С++

Код

void _tmain (int argc, LPTSTR argv[])
{ 
 TCHAR buf[200];
 HANDLE P1;
 LPWIN32_FIND_DATA LP;
 scanf("%s",buf);
 P1=FindFirstFile(buf,LP);
 if (P1==INVALID_HANDLE_VALUE) printf("\nINVALID_HANDLE_VALUE\n");
 FindClose(P1);
 system("PAUSE");
}


Я вводил уже всё что можно и просто имена файлов ,и директории, и комбинировал.
Но читая описание к этой функции я понял что можно напрмер ввести "C:\\*.txt"
и ф-ция FindFirstFile найдет первый файл удовлетворяющий заданным условиям.
Так у меня вылетает либо ошибка с памятью, либо INVALID_HANDLE_VALUE.
Я не понимаю почему, вродепро права доступа ничего не сказано=(

Я буду очень признателен, если кто исправит ошибки или предложит другой способ поиска файлов, который применим на С++ и не очень сложен.

Заранее  благодарен.

PM MAIL   Вверх
SenkraD
Дата 29.8.2007, 16:59 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 933
Регистрация: 3.2.2006
Где: Украина::Киев

Репутация: 4
Всего: 23



kamerrer, LPWIN32_FIND_DATA LP; - на что указывает указатель?!
Код

void _tmain (int argc, LPTSTR argv[])
{ 
 TCHAR buf[200];
 HANDLE P1;
 WIN32_FIND_DATA LP;
 scanf("%s",buf);
 P1=FindFirstFile(buf, &LP);
 if (P1==INVALID_HANDLE_VALUE) printf("\nINVALID_HANDLE_VALUE\n");
 FindClose(P1);
 system("PAUSE");

}




--------------------
 Имеющий язык - да не убоится спросить! 
user posted image
PM MAIL ICQ   Вверх
apook
Дата 29.8.2007, 17:27 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 794
Регистрация: 12.7.2006

Репутация: нет
Всего: 23



Делай рекурсивную функцию smile
Код

WIN32_FIND_DATA ffd; //FindFileData


тип имя_функции( char *что-то )
{
HANDLE hr;


Temp=new char[ 10000 ];
.....
.........
............

hr=FindFirstFile( Temp, &ffd );

if( hr != INVALID_HANDLE_VALUE )
{
    do
    {
    .....
    .......
    ..

    if( (stricmp( ffd.cFileName, "." ) !=0)
    && (stricmp( ffd.cFileName, ".." ) !=0) )   // это не надо
    {
        if( (ffd.dwFileAttributes & FILE_ATTRIBUTE_DIRECTORY) == ILE_ATTRIBUTE_DIRECTORY )
        {

            cout << "-+- DIRECTORIES -+- " << Temp << "\n";

            SetFileAttributes( Temp, 0 );   
            //имя_функции( Temp );                // рекурсивно удаляем содержимое
            //RemoveDirectory( Temp );       // удаляем теперь уже пустую папку
            }
        else   // иначе найден файл
        {

            cout << "-+- FILES -+- " << Temp << "\n";
            SetFileAttributes( Temp, 0 ); 
            //DeleteFile( Temp );            // удаляем файл
            }
        }    
      


      } while( FindNextFile( hr, &ffd ) !=0 ); // ищем, пока не уничтожим все ! 
    }

}




корче таким мокаром можно


Это сообщение отредактировал(а) apook - 29.8.2007, 17:29


--------------------
Мои руки из дуба, голова из свинца ну и пусть ...
PM MAIL   Вверх
kamerrer
Дата 29.8.2007, 19:37 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 14
Регистрация: 27.6.2007

Репутация: нет
Всего: нет



Спасибо за помощь SenkraD, apook.
PM MAIL   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "C/C++: Системное программирование и WinAPI"
Fixin
GremlinProg
xvr
feodorv
  • Большое количество информации и примеров с использованием функций WinAPI можно найти в MSDN
  • Описание сообщений, уведомлений и примеров с использованием компонент WinAPI (BUTTON, EDIT, STATIC, и т.п.), можно найти в MSDN Control Library
  • Непосредственно, перед созданием новой темы, проверьте заголовок и удостоверьтесь, что он отражает суть обсуждения.
  • После заполнения поля "Название темы", обратите внимание на наличие и содержание панели "А здесь смотрели?", возможно Ваш вопрос уже был решен.
  • Приводите часть кода, в которой предположительно находится проблема или ошибка.
  • Если указываете код, пользуйтесь тегами [code][/code], или их кнопочными аналогами.
  • Если вопрос решен, воспользуйтесь соответствующей ссылкой, расположенной напротив названия темы.
  • Один топик - один вопрос!
  • Перед тем как создать тему - прочтите это .

На данный раздел распространяются Правила форума и Правила раздела С++:Общие вопросы .


Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, Chipset, Step, Fixin, GremlinProg, xvr. feodorv.

 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | C/C++: Системное программирование и WinAPI | Следующая тема »


 




[ Время генерации скрипта: 0.0409 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.