Что нового

Странное поведение _FTP_FileGetSize

newbie215

Новичок
Сообщения
18
Репутация
0
Доброго времени суток! Столкнулся с проблемой:
Код:
;$ImgDll = _FTP_FileGetSize($FTPConnect,"./img.dll")
	  ;If $ImgDll<>0 Then
		 FileWriteLine($ErrorLog,"["&@MDAY&"."&@MON&"."&@YEAR&" "&@HOUR&":"&@MIN&":"&@SEC&"] StartOR: Файл Img.dll найден на сервере. Его размер в байтах: "&$ImgDll)
		 _FTP_DirSetCurrent($FTPConnect,"/")
		 _FTP_FileGet($FTPConnect,"./img.dll",".\Settings\img.dll")
		 if FileExists(".\Settings\img.dll") Then
		 MsgBox(0,_FTP_FileGetSize($FTPConnect,"./img.dll"),"Файл на диске!")
		 EndIf
		 FileWriteLine($ErrorLog,"["&@MDAY&"."&@MON&"."&@YEAR&" "&@HOUR&":"&@MIN&":"&@SEC&"] StartOR: Файл Img.dll скачан в директорию .\Settings\img.dll")
		 Return $ImgDll
	 ; Else
		; FileWriteLine($ErrorLog,"["&@MDAY&"."&@MON&"."&@YEAR&" "&@HOUR&":"&@MIN&":"&@SEC&"] StartOR: Файл Img.dll не найден на сервере: "&$Server)
		 ;Return 0
	;  EndIf


Если раскоменнтировать закоментированные строки, то условие сработает, но файл не скачается. Сначала решил, что дело в размере файла, но ошибся. Почему-то выражение $ImgDll = _FTP_FileGetSize($FTPConnect,"./img.dll") вызывает огромную нагрузку на ЦП, эти несколько строк обрабатываются секунд 30, хотя по такому же алгоритму проверялись другие файлы и все было ок. Прочитал про функцию возврата размера файла с FTP подробнее, оказывается она возвращает размер файла как uint64. Почитал в MSDN, но ничего не понял. Может кто-нибудь сможет объяснить. Приведенный исправно качает файл, а если убрать комментарии, то условие будет истинным, но качаться ничего не будет, а будет УДАЛЯТЬСЯ файл, даже, если он есть на диске. Даже если проверка стоит по img.dll, а качается другой файл, то другой файл беспощадно удаляется. Кошмар. :stars:
 
Автор
N

newbie215

Новичок
Сообщения
18
Репутация
0
Неужели никто не сталкивался с такой проблемой? :(
 

madmasles

Модератор
Глобальный модератор
Сообщения
7,790
Репутация
2,322
newbie215,
Попробуйте указать во всех _FTP_* функциях полные пути, например:
Код:
_FTP_FileGetSize($FTPConnect,"/Dir/img.dll")
 
Верх