:: Visual Foxpro, Foxpro for DOS
что не так с автоскачкой
boba
Автор

Сообщений: 6269
Откуда: Медвежьи озера-
Дата регистрации: 26.03.2001
делаю автоскачку файлов по некоему списку
Скачал около 200 файлов
Потом интернет отвалился
и все мои попытки пойти дольше
проваливаются
Качает из списка первый файл , выдает код ошибки
с минусом, и все
При следующем запуске снова читает только первый файл
в списке
Если в программе ошибка, как она ухитрилась до этого
отработать несколько часов и скачать пару сотен файлов
Файл список скачки вкладываю
Зацикливание до отсутствия ошибки не помогло

Declare Integer URLDownloadToFile In URLMON.Dll Long, String, String, Long, Long

adrr ='https://www.ncdc.noaa.gov/orders/qclcd/'
lcfile =Getfile('csv')
If Not Empty(lcfile)
strr = Filetostr(lcfile)
Endif
ln = Getwordcount(strr, Chr(13))
SET STEP ON
For ii = 1 To 2* ln

lcwrd = Getwordnum(Getwordnum(strr, ii, Chr(13)),1,';')
IF EMPTY(lcwrd)
lcwrd = Getwordnum(Getwordnum(strr, ii, Chr(13)),2,';')
endif

lcXMLFile = Curdir() + Sys(2015) + '.TMP'
hadrr = adrr + lcwrd
If Not Empty(lcwrd)
lok = IsFileDownloaded(hadrr, lcwrd)
Endif
ENDFOR
Clear Dlls 'URLDownloadToFile'


* ?????



Function IsFileDownloaded
Lparameters tcSourceFile As String, tcTargetFile As String
If !File(tcTargetFile)
lon = -1
DO WHILE lon !=0
lon = URLDownloadToFile(0, tcSourceFile, tcTargetFile, 0, 0)
enddo

Return File(tcTargetFile)
Endif
Return .F.
Function isinternetconnected
Local lnFlags As Integer
Declare SHORT InternetGetConnectedState In WININET Long @, Long
lnFlags = 0
InternetGetConnectedState(@lnFlags, 0)

Return !Inlist(lnFlags, 0, 16, 32, 48)
Ratings: 0 negative/0 positive
Re: что не так с автоскачкой
Каратаев

Сообщений: 3974
Откуда: Алматы
Дата регистрации: 04.12.2001
У меня вот такая конструкция работает уже долгое время. Выдрал из рабочего проекта:
* Вызывающая программа должна подсунуть updater-у файлик updater.cfg
* в этом файле должно быть указано:
* откуда что скачать
* Пример содержания файла updater.cfg
* http :// kzgo.kz/files-ddw/prg/kb/version.txt
* http: // kzgo.kz/files-ddw/prg/kb/updkb.zip
***********************************************************************
* В качестве параметра передается путь к папке обновления программы
***********************************************************************
LPARAMETERS tcPathUpd
LOCAL lcPathUpdTmp, lcFileCFG
m.lcPathUpdTmp = ADDBS(m.tcPathUpd+"Temp")
IF !DIRECTORY(m.lcPathUpdTmp)
MKDIR (m.lcPathUpdTmp)
ENDIF
m.lcFileCFG = m.tcPathUpd+"updater.cfg"
IF !FILE(m.lcFileCFG)
=MESSAGEBOX("Нет файла конфигурации",0+16,"Обновление")
RETURN 1000
ENDIF
Clear
Declare Integer isxdl_AddFile In "isxdl.dll" String strURL , String strFilename
Declare Integer isxdl_AddFileSize In "isxdl.dll" String strURL, String strFilename, Integer dwSize
Declare Integer isxdl_ClearFiles In "isxdl.dll"
Declare Integer isxdl_Download In "isxdl.dll" Integer ihWnd, String strURL,String strFilename
Declare Integer isxdl_DownloadFiles In "isxdl.dll" Integer ihWnd
Declare String isxdl_GetFileName In "isxdl.dll" String strURL
Declare Integer isxdl_IsConnected In "isxdl.dll"
Declare Integer isxdl_SetOption In "isxdl.dll" String strOption, String strValue
If isxdl_IsConnected()!=1
=MESSAGEBOX("Нет подключения",0+16,"Обновление")
Return 2000
EndIf
isxdl_ClearFiles()
isxdl_SetOption("language",m.tcPathUpd+"isxdl_ru.ini")
isxdl_SetOption("label","Обновление")
isxdl_SetOption("description","Закачиваем файлы")
isxdl_SetOption("title","Загрузка файлов")
isxdl_SetOption("smallwizardimage",m.tcPathUpd+"WizModernSmallImage-IS.bmp")
* считываем информацию из файла updater.cfg
* все строки - ссылки на модули обновления
STORE FOPEN(m.lcFileCFG,12) TO lnFile && Откроем файл
STORE FSEEK(lnFile, 0) TO gnTop && Переместим указатель в начало
LOCAL lcString, lcFileName
lcFileName = ''
do while .not. FEOF(lnFile)
m.lcString = ALLTRIM(FGETS(lnFile)) && Считаем строку
IF !EMPTY(m.lcString)
* отсекаю последний символ "=" из записи в ини-файле
IF RIGHT(m.lcString,1) == "="
m.lcString = LEFT(m.lcString,LEN(m.lcString)-1)
ENDIF
lcFileName = ALLTRIM(JUSTFNAME(m.lcString))
isxdl_AddFile(m.lcString,m.lcPathUpdTmp+lcFileName)
ENDIF
ENDDO
= FCLOSE(lnFile) && Закрываем файл
LOCAL lnRetval
m.lnRetval = isxdl_DownloadFiles(0)
*=MESSAGEBOX("Загрузка завершена "+Iif(isxdl_DownloadFiles(0)=1,"успешно","с ошибкой или прервана пользователем"))
RETURN m.lnRetval
Если надо - dll-ку могу выслать...


------------------
Никогда не бывает настолько плохо, чтобы не могло быть еще хуже.




Исправлено 2 раз(а). Последнее : Каратаев, 14.01.21 14:06
Ratings: 0 negative/0 positive
Re: что не так с автоскачкой
boba
Автор

Сообщений: 6269
Откуда: Медвежьи озера-
Дата регистрации: 26.03.2001
да,
пришлите dll
на vladimirzhuravlevtver53@yandex.ru
Ratings: 0 negative/0 positive
Re: что не так с автоскачкой
boba
Автор

Сообщений: 6269
Откуда: Медвежьи озера-
Дата регистрации: 26.03.2001
ничего не качает
и ошибки не дает
В файле списка были только имена без пути
Исправил так
Ничего не делает, и ошибки никакой не дает
файл списка верх такой
QCLCD201209.zip
QCLCD201210.zip
QCLCD201211.zip
QCLCD201212.zip

do while .not. FEOF(lnFile)
m.lcString = ALLTRIM(FGETS(lnFile)) && Считаем строку
IF !EMPTY(m.lcString)
* отсекаю последний символ "=" из записи в ини-файле
IF RIGHT(m.lcString,1) == "="
m.lcString = LEFT(m.lcString,LEN(m.lcString)-1)
ENDIF
lcFileName = 'https://www.ncdc.noaa.gov/orders/qclcd/'+ALLTRIM(JUSTFNAME(m.lcString))
SET STEP ON
isxdl_AddFile(m.lcString,m.lcPathUpdTmp+lcFileName)
ENDIF
ENDDO
Ratings: 0 negative/0 positive
Re: что не так с автоскачкой
boba
Автор

Сообщений: 6269
Откуда: Медвежьи озера-
Дата регистрации: 26.03.2001
Вопрос закрыт
Список линков с некоторой позиции
содержал невидимые символы chr(10)
В тексте их не видно,
а при сшивке линка для скачки получается ошибка
По номеру ошибке на формуе Бейсика нашел,
как человек нарвался 1-1 на такую же проблему
Сижу, докачиваю
Ratings: 0 negative/0 positive
Re: что не так с автоскачкой
Каратаев

Сообщений: 3974
Откуда: Алматы
Дата регистрации: 04.12.2001
Отправил на почту... Может пригодиться в любом случае...


------------------
Никогда не бывает настолько плохо, чтобы не могло быть еще хуже.
Ratings: 0 negative/0 positive


Извините, только зарегистрированные пользователи могут оставлять сообщения в этом форуме.

On-line: 32 (Гостей: 32)

© 2000-2024 Fox Club 
Яндекс.Метрика