Страница 1 из 1

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

СообщениеДобавлено: 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
Odyssey писал(а):Если зависимость от LCL допустима, то:
DeleteDirectory('directory', False);[/code] http://lazarus-ccr.sourceforge.net/docs ... ctory.html


Попробовал, получилось, работает (по крайней мере в 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.
Не хочу изучать Лазарус как в анекдоте - "работает? вот и не трогай!"