Bazaprogram.ru

Новости из мира ПК
0 просмотров
Рейтинг статьи
1 звезда2 звезды3 звезды4 звезды5 звезд
Загрузка...

Delphi проверить существование файла

Создание, удаление и проверка на наличие папки в Delphi

Часто, при работе с большим количеством файлов или просто для упорядочения, необходимо распределение файлов по отдельным каталогам и подкаталогам. Для автоматизации процесса, удобно, чтобы программа могла, при необходимости, самостоятельно создавать нужные ей директории для хранения файлов. В Delphi имеется набор функций для обеспечения данной задачи.

Создание папки

Создать папку в Delphi можно воспользовавшись функцией CreateDir или процедурой MkDir. Так же можно воспользоваться функцией ForceDirectories. Первые две команды корректно выполняют создание одной новой папки. Отличия же в том, как они себя ведут в случае если создать папку невозможно.

Функция CreateDir, в результате своего выполнения возвращает True, если создание папки успешно выполнено и False, если по какой-то причине создание выполнить не удалось. Это удобно для случаев, когда заданная директория может быть уже создана. Здесь можно работать без предварительной проверки на существование такой директории.

if CreateDir( ‘newfolder’ ) then
ShowMessage( ‘Папка успешно создана.’ )
else
ShowMessage( ‘Ошибка: папка не создана.’ );

Процедуру MkDir стоит использовать либо в случае, если заведомо известно, что создаваемой директории нет, либо с предварительной проверкой, так как при невозможности создать указанную папку, программа выведет ошибку.

В качестве параметра обе эти подпрограммы получают либо полный, либо относительный путь создаваемой папки. Например:

// полный путь
my_dir1 = ‘С:/folder1/folder2/newfolder’ ;

// относительный путь
my_dir2 = ‘newfolder’ ;
my_dir3 = ‘folder1/newfolder’ ;
my_dir4 = ‘ ../newfolder’ ;

При использовании любой из указанных переменных, параметром для любой команды создания папки, будет создаваться только папка «newfolder». Создать директорию, используя переменные my_dir1 и my_dir3 можно только, если все остальные папки в директории уже существуют. Например, если папка «‘folder1» еще не создана, то и создать «newfolder» так не получится.

Читать еще:  Top left css

Создание нескольких вложенных подпапок

Для создания нескольких вложенных директорий можно использовать функцию ForceDirectories, в которой указывается полный путь. Причем здесь нужно указывать полный путь.

Такая команда создаст на диске C: все указанные папки.

Чтобы все же работать с фалами относительно папки с программой, можно указать вычисление пути к папке программы с помощью функции ExtractFilePath.

Удаление папки

При удалении папки, важно учитывать есть ли в ней вложения или нет. Если папка пуста, то используется функция RemoveDir, в которой аналогично созданию, указывается путь к удаляемой папке. Функция при своем выполнении так же возвращает True, если удаление успешно и False, если удалить не удалось.

if RemoveDir( ‘myfolder’ ) then
ShowMessage( ‘Папка успешно удалена.’ )
else
ShowMessage( ‘Ошибка: папка не удалена.’ );

Если же папка не пуста, то можно использовать пользовательскую функцию, которая будет последовательно удалять все вложенные файлы, а затем и пустые папки. Для среды Delphi 2010, можно воспользоваться следующим методом:

TDirectory.Delete( ‘myfolder’ , True);

При этом, в разделе описаний должна быть добавлена библиотека IOUtils.

Если же такой возможности нет, стоит использовать следующую функцию, описанную еще в DelphiWorld. В параметре указывается путь к удаляемой папке. При успешном удалении (включая все вложения), функция вернет значение True, если удаление не удалось, вернет False.

// Функция удаления директории с вложениями.
function MyDirectoryDelete(dir: string): Boolean;
var
fos: TSHFileOpStruct;
begin
ZeroMemory(@fos, SizeOf(fos));
with fos do begin
wFunc := FO_DELETE;
fFlags := FOF_SILENT or FOF_NOCONFIRMATION
pFrom := PChar(dir + #0);
end ;
Result := (0 = ShFileOperation(fos));
end ;

// Вызов функции удаление в программе.
begin if MyDirectoryDelete( ‘myfolder’ ) then
ShowMessage( ‘Папка успешно удалена.’ )
else
ShowMessage( ‘Ошибка: папка не удалена.’ );
end ;

Читать еще:  Parallel for delphi

В раздел описаний здесь необходимо добавить библиотеку ShellApi.

Проверка существования директории

Для проверки наличия директории используется функция DirectoryExists. В параметре так же указывается полный или относительный путь к папке. Если заданная папка существует, функция вернет True, в обратном случае False.

if DirectoryExists( ‘myfolder’ ) then
ShowMessage( ‘Папка существует.’ )
else
ShowMessage( ‘Такой папки нет.’ );

Ссылка на основную публикацию
Adblock
detector