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

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

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

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 12.01.2018, 14:43   #1
Ship_1
Форумчанин
 
Регистрация: 10.02.2014
Сообщений: 526
По умолчанию Вопрос про UrlDownloadToFile

Что-то не пойму, почему
Код:
UrlDownloadToFile(nil, PChar(SourceFile), PChar(DestFile), 0, nil)
возвращает нулевой (правильный) результат даже если ссылка была неправильной (не существующей). Так и задумано?
Ship_1 вне форума Ответить с цитированием
Старый 12.01.2018, 15:07   #2
Alex11223
Старожил
 
Аватар для Alex11223
 
Регистрация: 12.01.2011
Сообщений: 19,500
По умолчанию

Видимо да.
https://msdn.microsoft.com/en-us/lib...(v=vs.85).aspx

Зачем пользоваться этой древней фигней?
Ушел с форума, https://www.programmersforum.rocks, alex.pantec@gmail.com, https://github.com/AlexP11223
ЛС отключены Аларом.
Alex11223 вне форума Ответить с цитированием
Старый 12.01.2018, 15:15   #3
Ship_1
Форумчанин
 
Регистрация: 10.02.2014
Сообщений: 526
По умолчанию

А какой фигнёй пользоваться на XE1?
И как проверить наличие URL не загружая саму страницу?
Если поконкретнее, я хочу, чтобы по введённому URL на jpg он (jpg) скачивался. Но перед этим было бы неплохо проверить - а есть ли вообще по данной ссылке что-то?
Ship_1 вне форума Ответить с цитированием
Старый 12.01.2018, 15:21   #4
Alex11223
Старожил
 
Аватар для Alex11223
 
Регистрация: 12.01.2011
Сообщений: 19,500
По умолчанию

Indy, Synapse.
Ушел с форума, https://www.programmersforum.rocks, alex.pantec@gmail.com, https://github.com/AlexP11223
ЛС отключены Аларом.
Alex11223 вне форума Ответить с цитированием
Старый 12.01.2018, 15:29   #5
Аватар
Старожил
 
Аватар для Аватар
 
Регистрация: 17.11.2010
Сообщений: 19,042
По умолчанию

Там на последний параметр callback функцию нужно цеплять, что бы чего-то выяснить о процессе скачивания. Ну и DeleteUrlCacheEntry не помешает перед UrlDownloadToFile, что бы из кеша не скачало, мало ли ))
Если бы архитекторы строили здания так, как программисты пишут программы, то первый залетевший дятел разрушил бы цивилизацию
Аватар вне форума Ответить с цитированием
Старый 12.01.2018, 15:30   #6
Serge_Bliznykov
Старожил
 
Регистрация: 09.01.2008
Сообщений: 26,238
По умолчанию

я вообще не в теме.
но я бы посмотрел в сторону использования TIdHttp

пример, на SO : IdHttp Just Get Response Code
Serge_Bliznykov вне форума Ответить с цитированием
Старый 12.01.2018, 15:43   #7
Alex11223
Старожил
 
Аватар для Alex11223
 
Регистрация: 12.01.2011
Сообщений: 19,500
По умолчанию

Зачем отдельный HEAD запрос? (который еще и может не работать на некоторых кривых сайтах)
Просто делать нужный запрос и смотреть результат (код или исключение, в зависимости от используемой библиотеки)
Ушел с форума, https://www.programmersforum.rocks, alex.pantec@gmail.com, https://github.com/AlexP11223
ЛС отключены Аларом.
Alex11223 вне форума Ответить с цитированием
Старый 12.01.2018, 16:00   #8
Serge_Bliznykov
Старожил
 
Регистрация: 09.01.2008
Сообщений: 26,238
По умолчанию

Цитата:
Сообщение от Alex11223 Посмотреть сообщение
Зачем отдельный HEAD запрос? (который еще и может не работать на некоторых кривых сайтах)
про это я ничего не скажу.


Цитата:
Сообщение от Alex11223 Посмотреть сообщение
Просто делать нужный запрос и смотреть результат (код или исключение, в зависимости от используемой библиотеки)
ну, а вдруг так JPG картинка на 100 Мб. Программа не устанет скачивать, чтобы проверить наличие?



p.s. впрочем, ещё раз повторю - я не в теме, просто пишу свои мысли. вполне допускаю, что я ошибаюсь.
Serge_Bliznykov вне форума Ответить с цитированием
Старый 12.01.2018, 16:01   #9
Ship_1
Форумчанин
 
Регистрация: 10.02.2014
Сообщений: 526
По умолчанию

Попробовал так:
Код:
function TForm1.downloader(url, FileName: string): boolean;
var
  LoadStream:tmemorystream;
  code : integer;
begin
  result:=false;
  try
    LoadStream := TMemoryStream.Create; // выделение памяти под переменную
    idHTTP1.Get(url, LoadStream); // загрузка в поток данных из сети
    LoadStream.SaveToFile(FileName); // сохраняем данные из потока на жестком диске
    LoadStream.Free; // освобождаем память
    code := idHTTP1.ResponseCode;
    result:=true;
  except
    on E: EIdHTTPProtocolException do
      code := idHTTP1.ResponseCode; // or: code := E.ErrorCode;
  end;
end;
но при ссылке heuftncz xnj
Цитата:
http/1.1 403 forbidden
UrlDownloadToFile с этой ссылкой справлялся.
Ship_1 вне форума Ответить с цитированием
Старый 12.01.2018, 16:03   #10
Alex11223
Старожил
 
Аватар для Alex11223
 
Регистрация: 12.01.2011
Сообщений: 19,500
По умолчанию

Цитата:
Сообщение от Serge_Bliznykov Посмотреть сообщение
Программа не устанет скачивать, чтобы проверить наличие?
Дык что скачивать-то если ее нет? Это ж невозможно физически )
Сервер скорее всего просто вернет 404 (или другую ошибку).
Ушел с форума, https://www.programmersforum.rocks, alex.pantec@gmail.com, https://github.com/AlexP11223
ЛС отключены Аларом.
Alex11223 вне форума Ответить с цитированием
Ответ


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

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

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Вопрос про Свойство Visible и про иконки в imagelist Kappi4 Компоненты Delphi 2 21.05.2010 13:10
метод UrlDownloadToFile uh-aleks Паскаль, Turbo Pascal, PascalABC.NET 1 27.02.2010 20:27
UrlDownloadToFile и GetInetFile HTL Работа с сетью в Delphi 0 16.01.2010 22:13
Вопрос наверное про функции, а так точно даже не знаю про что. (Вопрос начинющего #6) Albert2008 Общие вопросы Delphi 4 21.08.2008 15:33
У меня вопрос про базы данных,а точнее про таблицы!!! Alexij Общие вопросы Delphi 1 13.04.2008 23:24