|
|
Регистрация | << Правила форума >> | FAQ | Пользователи | Календарь | Поиск | Сообщения за сегодня | Все разделы прочитаны |
|
Опции темы | Поиск в этой теме | Опции просмотра |
#1
|
|||
|
|||
проблема с функцией скачивания файла из интернета
Код:
Function DownLoadRss(_LinkLoad, _SaveWay: string) : Boolean ; var F: File; BufferLen,SumSize: DWORD; hSession, hURL: HInternet; Buffer: array[1..1024] of Byte; begin SumSize:=0; // ResumePos:=0; //Инициализируемся AssignFile (F,_SaveWay); //Свяжемся с файлом ReWrite(f,1); // создадим //Открыли сессию hSession:= InternetOpen('X-Kachalka',PRE_CONFIG_INTERNET_ACCESS,nil,nil,0); //И наш УРЛ hURL := InternetOpenURL(hSession,PChar(_LinkLoad),nil,0,0,0); try REPEAT //Качаем InternetReadFile(hURL, @Buffer,SizeOf(Buffer),BufferLen); //Читаем буфер BlockWrite(f, Buffer, BufferLen); //Пишем в файл Application. Processmessages UNTIL BufferLen= 0; Result := true; except Result := false; end; InternetCloseHandle(hURL); Closefile(f); InternetCloseHandle(hSession); end; если программа запущена и функция используется первый раз то всё в порядке - файл закачивается и это чувствуется по затраченному времени и тому что программа занята. но вот все последующие разы использования выкидывают такой фокус: файл (даже если он удалён) качается в разы быстрее, и он качается в том же виде что и первый раз( я качаю rss ленты и заметил этот фокус когда я посмотрел файл сразу после скачивания и сравнил с тем что был на сайте и спустя 3 часа. на сайте обновилось а вот "скачанный" файл нет). |
#2
|
|||
|
|||
отключи кэширование
|
#3
|
|||
|
|||
какой параметр отвечает за кэширование?
|
#4
|
|||
|
|||
я разобрался. вот код для тех кто тоже озаботится:
Код:
Function DownLoad(_LinkLoad, _SaveWay: string) : Boolean ; var F: File; // ResumePos : DWORD; BufferLen,SumSize: DWORD; hSession, hURL: HInternet; Buffer: array[1..1024] of Byte; err: boolean; begin SumSize:=0; // ResumePos:=0; //Инициализируемся AssignFile (F,_SaveWay); //Свяжемся с файлом ReWrite(f,1); // создадим //Открыли сессию hSession:= InternetOpen('X-Kachalka',INTERNET_OPEN_TYPE_PRECONFIG,nil,nil,0); //И наш УРЛ hURL := InternetOpenURL(hSession,PChar(_LinkLoad),nil,0,INTERNET_FLAG_RELOAD,0); // InternetQueryDataAvailable(hURL, SumSize,0,0); // labe4.Caption := IntToStr(SumSize); try REPEAT //Качаем InternetReadFile(hURL, @Buffer,SizeOf(Buffer),BufferLen); //Читаем буфер BlockWrite(f, Buffer, BufferLen); //Пишем в файл Application. Processmessages; // UNTIL BufferLen= 0; Result := true; except Result := false; end; InternetCloseHandle(hURL); Closefile(f); InternetCloseHandle(hSession); // закрываемся. иначе идёт утечка памяти end; |