Люди помогите сделать поиск файлов
От: TankMan Россия www.tankman.tk
Дата: 22.01.02 14:33
Оценка:
Делаю прогу чисто на АПИ, но вот проблема, немогу сделать поиск по всему диску, определенного файла.
Никто случайно не поделится опытом?
Мнебы примерчик такого поиска.
Заранее балодарен.
Re: Люди помогите сделать поиск файлов
От: Курочкин Павел  
Дата: 22.01.02 15:10
Оценка:
Здравствуйте TankMan, Вы писали:

TM>Делаю прогу чисто на АПИ, но вот проблема, немогу сделать поиск по всему диску, определенного файла.

TM>Никто случайно не поделится опытом?
TM>Мнебы примерчик такого поиска.
TM>Заранее балодарен.

Воспоьзуйся функциями _findfirst, _findnext, _findclose.
Описание смотри в MSDN.
хых...
Re[2]: Люди помогите сделать поиск файлов
От: TankMan Россия www.tankman.tk
Дата: 22.01.02 16:54
Оценка:
Здравствуйте Курочкин Павел, Вы писали:
TM>>Делаю прогу чисто на АПИ, но вот проблема, немогу сделать поиск по всему диску, определенного файла.
КП>Воспоьзуйся функциями _findfirst, _findnext, _findclose.
КП>Описание смотри в MSDN.
КП>
Что вы думаете я такой тупой что названий этих функций не знаю?
Я не знаю как ими пользоваться, и если бы у меня был MSDN я бы уж давно посмотрел.
и еще насколько я помню в findfirst в качестве параметра нужно указывать директорию, в которой будет проходить поиск, а как узнать, какие именно директории будут находится на винте, вот этого я не знаю, поэтому прошу пример.
Re[3]: Люди помогите сделать поиск файлов
От: Курочкин Павел  
Дата: 22.01.02 17:06
Оценка:
Здравствуйте TankMan, Вы писали:

Я не думаю, что тупой, наоборот я думаю что Вы супер пупер программист =)

хых...
Re[3]: Люди помогите сделать поиск файлов
От: Рек Россия  
Дата: 22.01.02 17:10
Оценка:
Здравствуйте TankMan, Вы писали:

TM>Здравствуйте Курочкин Павел, Вы писали:

TM>>>Делаю прогу чисто на АПИ, но вот проблема, немогу сделать поиск по всему диску, определенного файла.
КП>>Воспоьзуйся функциями _findfirst, _findnext, _findclose.
КП>>Описание смотри в MSDN.
КП>>
TM>Что вы думаете я такой тупой что названий этих функций не знаю?
TM>Я не знаю как ими пользоваться, и если бы у меня был MSDN я бы уж давно посмотрел.
TM>и еще насколько я помню в findfirst в качестве параметра нужно указывать директорию, в которой будет проходить поиск, а как узнать, какие именно директории будут находится на винте, вот этого я не знаю, поэтому прошу пример.

Я дико извиняюсь, но ведь Интернет у тебя есть?!

http://msdn.microsoft.com/Library/

Там тоже, что на дисках, только новее.
Успехов!

PS

Про директории.
Начни с корневой директории диска.
Перебирая в ней файлы, смотри их атрибуты.
Так найдёшь каталоги второго уровня.
Дальше аналогично..

Удачи!
Re[3]: Люди помогите сделать поиск файлов
От: Рек Россия  
Дата: 22.01.02 17:30
Оценка:
Здравствуйте TankMan, Вы писали:

TM>Здравствуйте Курочкин Павел, Вы писали:

TM>>>Делаю прогу чисто на АПИ, но вот проблема, немогу сделать поиск по всему диску, определенного файла.
КП>>Воспоьзуйся функциями _findfirst, _findnext, _findclose.
КП>>Описание смотри в MSDN.
КП>>
TM>Что вы думаете я такой тупой что названий этих функций не знаю?
TM>Я не знаю как ими пользоваться, и если бы у меня был MSDN я бы уж давно посмотрел.
TM>и еще насколько я помню в findfirst в качестве параметра нужно указывать директорию, в которой будет проходить поиск, а как узнать, какие именно директории будут находится на винте, вот этого я не знаю, поэтому прошу пример.


Вот выкусил из msdn.

#include <stdio.h>
#include <io.h>
#include <time.h>

void main( void )
{
    struct _finddata_t c_file;
    long hFile;

    /* Find first .c file in current directory */
    if( (hFile = _findfirst( "*.c", &c_file )) == -1L )
       printf( "No *.c files in current directory!\n" );
   else
   {
            printf( "Listing of .c files\n\n" );
            printf( "\nRDO HID SYS ARC  FILE         DATE %25c SIZE\n", ' ' );
            printf( "--- --- --- ---  ----         ---- %25c ----\n", ' ' );
            printf( ( c_file.attrib & _A_RDONLY ) ? " Y  " : " N  " );
            printf( ( c_file.attrib & _A_SYSTEM ) ? " Y  " : " N  " );
            printf( ( c_file.attrib & _A_HIDDEN ) ? " Y  " : " N  " );
            printf( ( c_file.attrib & _A_ARCH )   ? " Y  " : " N  " );
            printf( " %-12s %.24s  %9ld\n",
               c_file.name, ctime( &( c_file.time_write ) ), c_file.size );

            /* Find the rest of the .c files */
            while( _findnext( hFile, &c_file ) == 0 )
            {
                printf( ( c_file.attrib & _A_RDONLY ) ? " Y  " : " N  " );
                printf( ( c_file.attrib & _A_SYSTEM ) ? " Y  " : " N  " );
                printf( ( c_file.attrib & _A_HIDDEN ) ? " Y  " : " N  " );
                printf( ( c_file.attrib & _A_ARCH )   ? " Y  " : " N  " );
                printf( " %-12s %.24s  %9ld\n",
                   c_file.name, ctime( &( c_file.time_write ) ), c_file.size );
            }

       _findclose( hFile );
   }
}


ещё тебе будет нужен аттрибут _A_SUBDIR — Subdirectory. Value: 0x10
Это чтобы залезать в поддиректории.
Re: Люди помогите сделать поиск файлов
От: IgoX Россия  
Дата: 22.01.02 17:45
Оценка:
Здравствуйте TankMan,
Сделано на Builder.
Работает нормально
void __fastcall TForm1::ListDir(AnsiString DirName, HANDLE hFile)
{
WIN32_FIND_DATA FindFileData;
HANDLE hFirstFileHandle = FindFirstFile( DirName.c_str(),&FindFileData );
AnsiString str;
SYSTEMTIME SysT,SysM;
FILETIME ftLocalC, ftLocalM;

while ( 1 )
{
if(FindFileData.dwFileAttributes & FILE_ATTRIBUTE_DIRECTORY)
{
if((Trim(FindFileData.cFileName) != Trim(".")) && (Trim(FindFileData.cFileName) != Trim("..")))
{
ListDir(DirName.SubString(1,DirName.Length()-3) + (String)FindFileData.cFileName+(String)"\\*.*",hFile);
}
}
if ( FindNextFile( hFirstFileHandle, &FindFileData ) == FALSE )
{
if ( GetLastError() == ERROR_NO_MORE_FILES )
break;
}
}

}
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.