Урок 15 Функции для работы с файлами и папками No title

April 1, 2006
в колонках играет Ian Gillan & Roger Clover-Lonely Avenue


Прывет, ботаник!Сегодня ты узнаешь как работать с файлами.
Сначала я приведу функции WinApi и их описание, а потом примеры.


DirectoryExists(" Directory");//функция проверяет, существует ли указанная директория, если да то возвращает true
ForceDirectories("Directory");//
создаёт папку вместе с подпапками
CreateDir(const AnsiString Dir);//
создаёт папку, промежуточные папки не создаются
RemoveDir(const AnsiString Dir);
//удалить папку
FileCreate("filename");//создать файл
FileExists("filename");//функция проверяет, существует ли указанный файл, если да то возвращает true
DeleteFile("filename");//
удалить файл
RenameFile("OldName", "NewName");//
переименовать файл

Для вышеперечисленных функций можно использовать конструкцию:

if(FileExists("c:\\porno.vob")==true){ShowMessage("Так оказывается на вашем компе есть порно-фильм!Ай-Ай-Ай!!");} //если файл c:\porno.vob существует, то появится MessageBox
Остальные функции создания, переименования, удаления возвращают true в случае удачного выполнения и false в случае неудачного выполнения функции.

------------------------------------------------------------------------------------------------
ChangeFileExt("filename"," Extension")//
изменить расширение файла
ExtractFilePath("filename");//
извлекает из полного пути к файлу его директорию
ExtractFileDir("filename");..//
извлекает из полного пути к файлу его директорию , на конце символ "\"
ExtractFileDrive("filename")
;//извлекает из полного пути к файлу диск, на котором файл находится
ExtractFileName("filename");
//извлекает имя файла
ExtractFileExt("filename");
//извлекает расширение файла


Все эти функции возвращают строковое значение(AnsiString) , например:

String s,d;
s=Application->ExeName
;//присваиваем строковой переменной s полное имя ехе-файла нашей программы
d=ExtractFileDir(s);
ShowMessage(d);//показываем сообщение со значением переменной d
d=ChangeFileExt(s,".xep");
//меняем расширение файла на "хер " при этом новое имя файла присваивается переменной d , а на винчестере расширение у нашего файла не меняется(чтобы изменить, можно использовать функцию RenameFile).
ShowMessage(d);

//МЕНЯЕМ РАСШИРЕНИЕ У ФАЙЛА
s="c:\\test.txt";// имя файла, проверьте, чтобы данный файл был у вас на компе, если нет, то создайте
RenameFile(s,ChangeFileExt(s,".htm"));//меняет у файла расширение, результат вы увидите уже в проводнике

ПОИСК ФАЙЛОВ

// Для поиска файлов в каталоге и его подкаталогах напишите следующий код:
void ListFiles(AnsiString path, TStrings* List)
{
// Эта процедура выводит список файлов и вызывает
// саму себя для всех каталогов
TSearchRec sr;
if (FindFirst(path+"*.*", faAnyFile, sr) == 0)
{
  do
  {  if (sr.Attr & faDirectory)   {
   if (sr.Name!=".")
   if (sr.Name!="..")
    {
    ListFiles(path+sr.Name+"\\",List);//
Рекурсивный вызов
    }
   }
   else
    {
    AnsiString Ext=ExtractFileExt(sr.Name).UpperCase();
    if (Ext==".CPP")//
если расширение равно cpp, то файл будет добавляться в список

    List->Add(path+sr.Name);
    }
  }
  while (FindNext(sr) == 0);
 
}
Application->ProcessMessages();
}

Киньте на форму Memo1 и Button1 и в событии onClick у кнопки напишите следующий код
void __fastcall TForm1::Button1Click(TObject *Sender)
{
ListFiles("c:\\",Memo1->Lines);//
следите за тем, чтобы путь папки заканчивался "
\\"
//Примечание: при указаниии пути к файлу, папке, надо вместо "\" указывать "\\", ибо все символы, начинающиеся на "\", являются эскейп-последовательностями.

}


Если есть вопросы по этому материалу или вопросы в принципе, пишите на мыло, ответы постараюсь выложить в последующих уроках.


Author of article - MA F*CKA CREW 2006
www.builderhelper.3dn.ru
builder.helper@rambler.ru