Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > Delphi программирование > Работа с сетью в Delphi
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 30.07.2009, 07:17   #11
BARNEY
Участник клуба
 
Регистрация: 23.04.2009
Сообщений: 1,058
По умолчанию

uberchel
Мне через прокси надо....

а как на счёт этого в вашем коде
Код:
repeat
InternetReadFile(hURL, @Buffer, SizeOf(Buffer), BufferLen);
BlockWrite(f, Buffer, BufferLen)
Если вам человек помог, не стесняйтесь говорить спасибо (весы под аватаром)
BARNEY вне форума Ответить с цитированием
Старый 10.04.2010, 15:03   #12
dim565
 
Регистрация: 04.11.2009
Сообщений: 6
По умолчанию

Такая была проблема при использовании кода с первой страницы темы. Файл-то качался! Но! Он сохранялся в кэше IE. Поэтому если что-нибудь изменится в файле - скорее всего, скачается файл из кэша - без новых изменений.

Решение проблемы:
1) Очистка кэша IE после скачки файла:

procedure EmptyIECache;
var
lpEntryInfo: PInternetCacheEntryInfo;
hCacheDir: LongWord;
dwEntrySize: LongWord;
dwLastError: LongWord;
begin
dwEntrySize := 0;
FindFirstUrlCacheEntry(nil, TInternetCacheEntryInfo(nil^), dwEntrySize);
GetMem(lpEntryInfo, dwEntrySize);
hCacheDir := FindFirstUrlCacheEntry(nil, lpEntryInfo^, dwEntrySize);
if (hCacheDir <> 0) then
DeleteUrlCacheEntry(lpEntryInfo^.lp szSourceUrlName);
FreeMem(lpEntryInfo);
repeat
dwEntrySize := 0;
FindNextUrlCacheEntry(hCacheDir, TInternetCacheEntryInfo(nil^),
dwEntrySize);
dwLastError := GetLastError();
if (GetLastError = ERROR_INSUFFICIENT_BUFFER) then
begin
GetMem(lpEntryInfo, dwEntrySize);
if (FindNextUrlCacheEntry(hCacheDir, lpEntryInfo^, dwEntrySize)) then
DeleteUrlCacheEntry(lpEntryInfo^.lp szSourceUrlName);
FreeMem(lpEntryInfo);
end;
until (dwLastError = ERROR_NO_MORE_ITEMS);
end;

Минус - как-то не правильно после скачки файла очищать кэш
2) Изменяем ссылку-источник на такую, например: http://www.example.ru/1.txt&rnd6363
После rnd - рандомно меняем цифры.
Минус - получится много мелких файлов в кэше

3) Вместо строчки
Цитата:
hURL := InternetOpenURL(hSession, PChar(fileURL),nil,0,0,0);
Пишем так:

hURL := InternetOpenURL(hSession, PChar(fileURL),nil,0,INTERNET_FLAG_ NO_CACHE_WRITE,0);

Минус - пока не нашел.

Т.е третий способ, как я понял, самый оптимальный. Кстати, способ этот нашел на здесь
dim565 вне форума Ответить с цитированием
Старый 10.04.2010, 15:53   #13
W0LF
Форумчанин
 
Аватар для W0LF
 
Регистрация: 28.03.2008
Сообщений: 940
По умолчанию

Вот статья показывающая как скачать файл + ProgressBar + в потоке...
Сделано на примере IdHTTP, по этому добавить прокси - секундное дело...
W0LF вне форума Ответить с цитированием
Старый 11.04.2010, 10:27   #14
MyIE
Форумчанин
 
Аватар для MyIE
 
Регистрация: 02.01.2010
Сообщений: 127
По умолчанию

Данную функцию лучше не использовать, если твоя программа пойдет в массы, т.к. на нее ругаются антивирусы.
0_o
MyIE вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Программа получения списка файлов директории и изменения атрибутов файлов roma86 Assembler - Ассемблер (FASM, MASM, WASM, NASM, GoASM, Gas, RosAsm, HLA) и не рекомендуем TASM 7 09.06.2009 09:08
Отправка файлов по HTTP протоколу с помощью MFC Руслантус Общие вопросы C/C++ 0 27.05.2009 19:54
Скачка файлов из инета по очереди koyotfgthispass Работа с сетью в Delphi 17 24.12.2008 17:50
Копирование файлов через http протокол Serega_P Работа с сетью в Delphi 3 06.12.2008 14:35
Работа с ФТП: Скачка файлов Horror Общие вопросы .NET 4 03.03.2008 14:50