| Билли Боб | 
			
			  18.08.2011 22:54
			
				 Сообщение
					#1				
			 
		 | 
	
| 
        	
        		 Новичок ![]() Группа: Пользователи Сообщений: 47 Пол: Мужской Репутация:    0           	 | 
       
			
			 Процедура удаляет папку со всеми файлами и подпапками. 
			
			
					
		
 На TP работает, а вот на FPC как-то криво работает. Что-то удаляет,а что-то нет. Если указать просто пустой каталог, то даже его не удаляет. В чем проблема?  | 
	
![]() ![]()  | 
	
| Lapp | 
			
			  19.08.2011 5:15
			
				 Сообщение
					#2				
			 
		 | 
	
        	
        		![]() Уникум ![]() ![]() ![]() ![]() ![]() ![]() ![]() Группа: Модераторы Сообщений: 6 823 Пол: Мужской Реальное имя: Лопáрь (Андрей) Репутация:    159           	 | 
       
			
			 На TP работает, а вот на FPC как-то криво работает. Что-то удаляет,а что-то нет. Если указать просто пустой каталог, то даже его не удаляет. В чем проблема? Проблема в том, что в FP поиск файлов устроен несколько иначе. Тебе нужно после использования FindFirst и FindNext сначала закрыть поиск процедурой FindClose(var f: SearchRec), а потом уже удалять директорию процедурой rmdir. В качестве параметра для FindClose используй ту самую запись, с которой ты делал поиск. Если ты этого не сделаешь, то вообще-то директория все равно удалится, но только после завершения программы (что неприемлемо во многих случаях), поскольку незакрытый поиск держит ее. Даже если не удаляешь ничего - все равно закрывай поиск, это right thing to do. А вообще, советую посмотреть еще раз на логику программы, она явно нуждается в улучшении. Например, эти две строки: if stat(fd)='F' then begin assign(f,fd); setfattr(f,0); erase(f) end;Тут ты два раза вызываешь одну и ту же функцию с тем же параметром: stat(fd). Спрашивается - зачем? Можно, например, заменить на такое: case stat(fd) of Далеко вглубь я не смотрел пока, исправь эти ошибки - тогда продолжим разбор, если хочешь. -------------------- я - ветер, я северный холодный ветер 
					
		я час расставанья, я год возвращенья домой  | 
	
 Билли Боб   FPC, удаление директорий и файлов   18.08.2011 22:54
 
 Lapp   Тему переношу в раздел "32-битные компиляторы...   19.08.2011 11:56
 
 Билли Боб   Благодарю! C FindClose все отлично работает, и...   20.08.2011 0:21
 
 IUnknown   Билли Боб, не знаю, сделал ты это или нет, но при ...   20.08.2011 9:46
 
 Билли Боб   так выходит ошибка: Incompatible types: got ...   20.08.2011 17:56
 
 IUnknown   Как "так"? Почему у меня не выходит?
us...   20.08.2011 18:27
 
 Билли Боб   Оказывается надо было убрать модуль DOS после USES...   20.08.2011 19:04
 
 Билли Боб   Почему программа зависает, когда я пишу: uses sysu...   20.08.2011 22:07
 
 IUnknown   Хм... Интересно. Сама среда разработки зависает? А...   20.08.2011 22:33
 
 Билли Боб   Не знаю, как это получилось, но еще зависало когда...   20.08.2011 22:41
 
 Билли Боб   Как сделать курсор снова маленьким? а то после cur...   20.08.2011 23:48
 
 Lapp   Как сделать курсор снова маленьким? а то после cur...   21.08.2011 11:27![]() ![]()  | 
	
 
  | 
		Текстовая версия | 4.11.2025 10:22 |