Удаление непустой папки

Модератор: Модераторы

Удаление непустой папки

Сообщение HiddenByte » 30.07.2011 20:17:08

Возник такой вопрос: как удалить непустую папку средствами Lazarus (точнее в коде на FreePascal) ?
Когда раньше писал программы в Delphi, там все просто - DelDir и привет. А здесь что-то никак не могу найти нужную процедуру... подскажите кто знает!
Или надо писать самому, как в Borland Pascal 7.0: удалить все файлы в папке (через рекурсию, например), потом удалить саму папку... а можт все-таки встроенная такая процедура есть? Или надо определить, в какой среде программа запущена (в Windows или Linux), а потом уже через системный API работать? Мне вот как-то больше нравится файловые операции на откуп операционке отдавать, тогда и обработчики ошибок на ней будут. :)
HiddenByte
незнакомец
 
Сообщения: 5
Зарегистрирован: 07.04.2011 21:24:02

Re: Удаление непустой папки

Сообщение Odyssey » 30.07.2011 21:51:21

Если зависимость от LCL допустима, то:
Код: Выделить всё
uses FileUtil;
// ...
DeleteDirectory('directory', False);
http://lazarus-ccr.sourceforge.net/docs ... ctory.html
Odyssey
энтузиаст
 
Сообщения: 581
Зарегистрирован: 29.11.2007 17:32:24

Re: Удаление непустой папки

Сообщение HiddenByte » 30.07.2011 22:11:01

Odyssey писал(а):Если зависимость от LCL допустима, то:
DeleteDirectory('directory', False);[/code] http://lazarus-ccr.sourceforge.net/docs ... ctory.html


Попробовал, получилось, работает (по крайней мере в WinXP SP3). Спасибо за подсказку! :)
HiddenByte
незнакомец
 
Сообщения: 5
Зарегистрирован: 07.04.2011 21:24:02

Re: Удаление непустой папки

Сообщение levchukvv » 16.05.2014 18:14:00

Подскажите, я не совсем понял как работает эта функция?
levchukvv
новенький
 
Сообщения: 11
Зарегистрирован: 15.05.2014 20:50:39

Re: Удаление непустой папки

Сообщение Sharfik » 29.08.2014 15:46:23

В чем принципиальное различие работы функций RemoveDirUTF8 и DeleteDirectory?
Sharfik
постоялец
 
Сообщения: 477
Зарегистрирован: 20.07.2013 01:04:30

Re: Удаление непустой папки

Сообщение Ism » 29.08.2014 16:39:11

Sharfik писал(а):В чем принципиальное различие работы функций RemoveDirUTF8 и DeleteDirectory?

В utf8 имя и путь воспринимаются в utf8, а простая функция принимает параметр в кодировке ОС, в винде это cp1251

Насчет реализации это может быть вызов api системы либо функция удаляющая все пофайлово
Ism
энтузиаст
 
Сообщения: 900
Зарегистрирован: 06.04.2007 17:36:08

Re: Удаление непустой папки

Сообщение Sharfik » 30.08.2014 00:13:39

Все что на поверхности написано и видно рассказал, а на вопрос не ответил)))
Sharfik
постоялец
 
Сообщения: 477
Зарегистрирован: 20.07.2013 01:04:30

Re: Удаление непустой папки

Сообщение hinst » 31.08.2014 14:49:03

кароч в DeleteDirectory если передашь UTF-8 строку то работать не будет, а если в RemoveDirUTF8 передашь ANSI-строку, то работать не будет. Что не понятного-то
Аватара пользователя
hinst
энтузиаст
 
Сообщения: 782
Зарегистрирован: 12.04.2008 18:32:38

Re: Удаление непустой папки

Сообщение Sharfik » 31.08.2014 18:17:02

Короче)) То что ты говоришь написано в названии самой функции, а вопрос был о разнице их работы. В Delphi есть процедура удаления папки, но только пустой папки. Тут у нас две процедуры, одна трет всю папку, без разбора, включая содержимое, другая отличается от нее передаваемым параметром, но как работает фиг знает. Отследить до конца логику из работы у меня не получилось, плюс нет информации какие модуль в Лазарусе новые, какие старые. Вопрос возник потому что сейчас мне удобно использовать DeleteDirectory, но я не хочу попасть на том, что окажется что это устаревшая функция, которую оставили с первых версий среды или т.п., и что потом когда то ее зарубят, либо она не будет работать в Linux, а только под Windows.
Не хочу изучать Лазарус как в анекдоте - "работает? вот и не трогай!"
Sharfik
постоялец
 
Сообщения: 477
Зарегистрирован: 20.07.2013 01:04:30


Вернуться в Файловая система

Кто сейчас на конференции

Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 1

Рейтинг@Mail.ru