| Билли Боб | 
			
			  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 Далеко вглубь я не смотрел пока, исправь эти ошибки - тогда продолжим разбор, если хочешь. -------------------- я - ветер, я северный холодный ветер 
					
		я час расставанья, я год возвращенья домой  | 
	
| Lapp | 
			
			  19.08.2011 11:56
			
				 Сообщение
					#3				
			 
		 | 
	|||
        	
        		![]() Уникум ![]() ![]() ![]() ![]() ![]() ![]() ![]() Группа: Модераторы Сообщений: 6 823 Пол: Мужской Реальное имя: Лопáрь (Андрей) Репутация:    159           	 | 
       
			
			
 -------------------- я - ветер, я северный холодный ветер 
					
		я час расставанья, я год возвращенья домой  | 
	|||
| Билли Боб | 
			
			  20.08.2011 0:21
			
				 Сообщение
					#4				
			 
		 | 
	
| 
        	
        		 Новичок ![]() Группа: Пользователи Сообщений: 47 Пол: Мужской Репутация:    0           	 | 
       
			
			 Благодарю! C FindClose все отлично работает, и за CASE спасибо! 
			
			
					
		 | 
	
| IUnknown | 
			
			  20.08.2011 9:46
			
				 Сообщение
					#5				
			 
		 | 
	
        	
        		![]() a.k.a. volvo877 ![]() ![]() ![]() ![]() ![]() Группа: Пользователи Сообщений: 1 013 Пол: Мужской Репутация:    627           	 | 
       
			
			 Билли Боб, не знаю, сделал ты это или нет, но при работе с FPC от модуля DOS надо бы избавляться. И цикл перебора должен быть не  
			
			
					
		findfirst(...); , а if findfirst(...) then (и FindFirst и FindNext здесь - функции, результат их работы сигнализирует об успехе) Сообщение отредактировано: IUnknown - 20.08.2011 10:53  | 
	
| Билли Боб | 
			
			  20.08.2011 17:56
			
				 Сообщение
					#6				
			 
		 | 
	
| 
        	
        		 Новичок ![]() Группа: Пользователи Сообщений: 47 Пол: Мужской Репутация:    0           	 | 
       
			
			 так выходит ошибка: Incompatible types: got "untyped" expected "LongInt" 
			
			
					
		 | 
	
| IUnknown | 
			
			  20.08.2011 18:27
			
				 Сообщение
					#7				
			 
		 | 
	
        	
        		![]() a.k.a. volvo877 ![]() ![]() ![]() ![]() ![]() Группа: Пользователи Сообщений: 1 013 Пол: Мужской Репутация:    627           	 | 
       
			
			 Цитата так выходит ошибка: Incompatible types: got "untyped" expected "LongInt" Как "так"? Почему у меня не выходит?uses sysutils; Ничего не менял в логике работы (хотя тут тоже есть, на что обратить внимание), просто добавил нужный модуль и поменял цикл. Компиляцию проходит успешно. FPC 2.4.4 ...  | 
	
| Билли Боб | 
			
			  20.08.2011 19:04
			
				 Сообщение
					#8				
			 
		 | 
	
| 
        	
        		 Новичок ![]() Группа: Пользователи Сообщений: 47 Пол: Мужской Репутация:    0           	 | 
       
			
			 Оказывается надо было убрать модуль DOS после USES. 
			
			
					
		 | 
	
| Билли Боб | 
			
			  20.08.2011 22:07
			
				 Сообщение
					#9				
			 
		 | 
	
| 
        	
        		 Новичок ![]() Группа: Пользователи Сообщений: 47 Пол: Мужской Репутация:    0           	 | 
       
			
			 Почему программа зависает, когда я пишу: uses sysu...и тут виснет 
			
			
					
		даже просто в любом месте пишу sysu, и зависает Сообщение отредактировано: Билли Боб - 20.08.2011 22:08  | 
	
| IUnknown | 
			
			  20.08.2011 22:33
			
				 Сообщение
					#10				
			 
		 | 
	
        	
        		![]() a.k.a. volvo877 ![]() ![]() ![]() ![]() ![]() Группа: Пользователи Сообщений: 1 013 Пол: Мужской Репутация:    627           	 | 
       
			
			 Цитата даже просто в любом месте пишу sysu, и зависает Хм... Интересно. Сама среда разработки зависает? А ты чем пользуешься, "родной" IDE? Ни разу с таким не сталкивался, чтобы какое-то определенное сочетание символов приводило к зависанию среды FPC. Ну, напечатай это слово в Блокноте, и скопируй в программу, там в меню Edit должно быть Paste from Windows. | 
	
| Билли Боб | 
			
			  20.08.2011 22:41
			
				 Сообщение
					#11				
			 
		 | 
	
| 
        	
        		 Новичок ![]() Группа: Пользователи Сообщений: 47 Пол: Мужской Репутация:    0           	 | 
       
			
			 Не знаю, как это получилось, но еще зависало когда печатал syst, хотя если напечатать sys, а через пробел utils, то после удаления пробела все нормально. Вообщем решилась проблема удалением файла fp.dsk. 
			
			
					
		 | 
	
| Билли Боб | 
			
			  20.08.2011 23:48
			
				 Сообщение
					#12				
			 
		 | 
	
| 
        	
        		 Новичок ![]() Группа: Пользователи Сообщений: 47 Пол: Мужской Репутация:    0           	 | 
       
			
			 Как сделать курсор снова маленьким? а то после cursorbig он остался большим, хоть я и убрал эту строку. 
			
			
					
		и как сделать, чтобы дата datetimetostring на русском отображалась? Сообщение отредактировано: Билли Боб - 21.08.2011 0:04  | 
	
| Lapp | 
			
			  21.08.2011 11:27
			
				 Сообщение
					#13				
			 
		 | 
	
        	
        		![]() Уникум ![]() ![]() ![]() ![]() ![]() ![]() ![]() Группа: Модераторы Сообщений: 6 823 Пол: Мужской Реальное имя: Лопáрь (Андрей) Репутация:    159           	 | 
       
			
			 Как сделать курсор снова маленьким? а то после cursorbig он остался большим, хоть я и убрал эту строку. и как сделать, чтобы дата datetimetostring на русском отображалась? Билли, пожалуйста, не флуди. Что тема начата тобой - совсем не значит, что тебе в ней позволено все. Будь добр, говори по предмету этого треда. А если есть еще вопросы - пожалуйста, начинай новые темы. И объясни в них существо вопроса поподробнее. Спасибо за внимание. -------------------- я - ветер, я северный холодный ветер 
					
		я час расставанья, я год возвращенья домой  | 
	
![]() ![]()  | 
	
 
  | 
		Текстовая версия | 4.11.2025 10:17 |