Операции с каталогами

Для работы с каталогами в 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.

В начало

На главную подраздела

Домой