Операции с каталогамиДля работы с каталогами в Borland C++ Builder доступны как функции WinApi так и свои переопределенные функции. Их применение зависит от пристрастий программистов. Создание нового каталогаДля создания каталогов используется функция WinApi CreateDirectory(). System::AnsiString vasDirName; CreateDirectory( vasDirName.c_str(), // имя создаваемого каталога NULL); // атрибуты защиты; в Windows 9x игнорируются CreateDirectory() - имеет два параметра. Первый задает имя создаваемого каталога, второй - атрибуты защиты, которые присваиваются всем объектам ядра Windows. Обычно этот параметр равен NULL. Если данный каталог уже существует функция возвращает 0. Удаление каталогаУдаление каталога производится функцией API RemoveDirectory(), для которой передается единственный параметр с именем удаляемого каталога. System::AnsiString vasDirName; RemoveDirectory ( vasDirName.c_str() // имя удаляемого каталога ); Если произошла ошибка, это может означать то, что либо заданного каталога не существует, либо внутри этого каталога имеются неудаленные файлы. Определение имени каталогаОпределить имя каталога как правило бывает необходимо, чтобы узнать откуда стартовала программа. Наиболее простые способы: Способ 1. AnsiString vAsCurDir; vAsCurDir=ExtractFilePath(ParamStr(0)); Способ 2. AnsiString vAsCurDir; vAsCurDir=GetCurrentDir(); Способ 3. Не забываем, что текущая директория во время выполнения программы может меняться: TCHAR thBuffer[MAX_PATH]; GetCurrentDirectory(sizeof(thBuffer),thBuffer); Memo1->Lines->Add(thBuffer); SetCurrentDirectory("C:\\"); GetCurrentDirectory(sizeof(thBuffer),thBuffer); Memo1->Lines->Add(thBuffer); Результат: C:\Program Files\Borland\CBuilder6\Projects C:\ Способ 4. Полное имя EXE файла программы можно определить и так: char vchBuffer[MAX_PATH]; GetModuleFileName(Form1->ClientHandle,vchBuffer,MAX_PATH); Memo1->Lines->Add(vchBuffer); Результат: C:\PROGRAM FILES\BORLAND\CBUILDER6\PROJECTS\PROJECT1.EXE Для извлечения имени директории достаточно воспользоваться функциями
SubString и LastDelimetr.
|