Форум по Delphi программированию

Delphi Sources



Вернуться   Форум по Delphi программированию > Все о Delphi > Интернет и сети
Ник
Пароль
Регистрация <<         Правила форума         >> FAQ Пользователи Календарь Поиск Сообщения за сегодня Все разделы прочитаны

Ответ
 
Опции темы Поиск в этой теме Опции просмотра
  #1  
Старый 27.02.2009, 19:46
Zeitgeist7 Zeitgeist7 вне форума
Прохожий
 
Регистрация: 27.02.2009
Сообщения: 5
Репутация: 10
По умолчанию проблема с функцией скачивания файла из интернета

Код:
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  
Старый 27.02.2009, 22:07
AlexTheC0d3r AlexTheC0d3r вне форума
Прохожий
 
Регистрация: 26.02.2009
Сообщения: 25
Репутация: 10
По умолчанию

отключи кэширование
Ответить с цитированием
  #3  
Старый 28.02.2009, 05:23
Zeitgeist7 Zeitgeist7 вне форума
Прохожий
 
Регистрация: 27.02.2009
Сообщения: 5
Репутация: 10
По умолчанию

какой параметр отвечает за кэширование?
Ответить с цитированием
  #4  
Старый 02.03.2009, 15:49
Zeitgeist7 Zeitgeist7 вне форума
Прохожий
 
Регистрация: 27.02.2009
Сообщения: 5
Репутация: 10
По умолчанию

я разобрался. вот код для тех кто тоже озаботится:
Код:
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;
каждый раз качает файл поновой. кэш отключён
Ответить с цитированием
Ответ


Delphi Sources

Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск
Опции просмотра

Ваши права в разделе
Вы не можете создавать темы
Вы не можете отвечать на сообщения
Вы не можете прикреплять файлы
Вы не можете редактировать сообщения

BB-коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.
Быстрый переход


Часовой пояс GMT +3, время: 17:40.


 

Сайт

Форум

FAQ

RSS лента

Прочее

 

Copyright © Форум "Delphi Sources" by BrokenByte Software, 2004-2023

ВКонтакте   Facebook   Twitter