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

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

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

Добавлено:
30.07.2011 21:51:21
Odyssey
Если зависимость от LCL допустима, то:
- Код: Выделить всё
uses FileUtil;
// ...
DeleteDirectory('directory', False);
http://lazarus-ccr.sourceforge.net/docs ... ctory.html
Re: Удаление непустой папки

Добавлено:
30.07.2011 22:11:01
HiddenByte
Попробовал, получилось, работает (по крайней мере в WinXP SP3). Спасибо за подсказку!

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

Добавлено:
16.05.2014 18:14:00
levchukvv
Подскажите, я не совсем понял как работает эта функция?
Re: Удаление непустой папки

Добавлено:
29.08.2014 15:46:23
Sharfik
В чем принципиальное различие работы функций RemoveDirUTF8 и DeleteDirectory?
Re: Удаление непустой папки

Добавлено:
29.08.2014 16:39:11
Ism
Sharfik писал(а):В чем принципиальное различие работы функций RemoveDirUTF8 и DeleteDirectory?
В utf8 имя и путь воспринимаются в utf8, а простая функция принимает параметр в кодировке ОС, в винде это cp1251
Насчет реализации это может быть вызов api системы либо функция удаляющая все пофайлово
Re: Удаление непустой папки

Добавлено:
30.08.2014 00:13:39
Sharfik
Все что на поверхности написано и видно рассказал, а на вопрос не ответил)))
Re: Удаление непустой папки

Добавлено:
31.08.2014 14:49:03
hinst
кароч в DeleteDirectory если передашь UTF-8 строку то работать не будет, а если в RemoveDirUTF8 передашь ANSI-строку, то работать не будет. Что не понятного-то
Re: Удаление непустой папки

Добавлено:
31.08.2014 18:17:02
Sharfik
Короче)) То что ты говоришь написано в названии самой функции, а вопрос был о разнице их работы. В Delphi есть процедура удаления папки, но только пустой папки. Тут у нас две процедуры, одна трет всю папку, без разбора, включая содержимое, другая отличается от нее передаваемым параметром, но как работает фиг знает. Отследить до конца логику из работы у меня не получилось, плюс нет информации какие модуль в Лазарусе новые, какие старые. Вопрос возник потому что сейчас мне удобно использовать DeleteDirectory, но я не хочу попасть на том, что окажется что это устаревшая функция, которую оставили с первых версий среды или т.п., и что потом когда то ее зарубят, либо она не будет работать в Linux, а только под Windows.
Не хочу изучать Лазарус как в анекдоте - "работает? вот и не трогай!"