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