Форум программистов
 
Контакты: о проблемах с регистрацией, почтой и по другим вопросам пишите сюда - alarforum@yandex.ru, проверяйте папку спам! Обязательно пройдите активизацию e-mail.

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

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

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

Что-то не пойму, почему
Код:

UrlDownloadToFile(nil, PChar(SourceFile), PChar(DestFile), 0, nil)

возвращает нулевой (правильный) результат даже если ссылка была неправильной (не существующей). Так и задумано?
Ship_1 вне форума   Ответить с цитированием
Старый 12.01.2018, 16:07   #2
Alex11223
Модератор
Заслуженный модератор
 
Регистрация: 12.01.2011
Сообщений: 17,380
Репутация: 3353

icq: 512-765
skype: alexp.frl
По умолчанию

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

Зачем пользоваться этой древней фигней?
Alex11223 вне форума   Ответить с цитированием
Старый 12.01.2018, 16:15   #3
Ship_1
Участник клуба
 
Регистрация: 10.02.2014
Сообщений: 523
Репутация: 60
По умолчанию

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

icq: 512-765
skype: alexp.frl
По умолчанию

Indy, Synapse.
Alex11223 вне форума   Ответить с цитированием
Старый 12.01.2018, 16:29   #5
Аватар
Модератор
Заслуженный модератор
 
Аватар для Аватар
 
Регистрация: 17.11.2010
Адрес: Северодонецк.ua
Сообщений: 18,086
Репутация: 6385
По умолчанию

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

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

пример, на SO : IdHttp Just Get Response Code
Serge_Bliznykov вне форума   Ответить с цитированием
Старый 12.01.2018, 16:43   #7
Alex11223
Модератор
Заслуженный модератор
 
Регистрация: 12.01.2011
Сообщений: 17,380
Репутация: 3353

icq: 512-765
skype: alexp.frl
По умолчанию

Зачем отдельный HEAD запрос? (который еще и может не работать на некоторых кривых сайтах)
Просто делать нужный запрос и смотреть результат (код или исключение, в зависимости от используемой библиотеки)
Alex11223 вне форума   Ответить с цитированием
Старый 12.01.2018, 17:00   #8
Serge_Bliznykov
МегаМодератор
СуперМодератор
 
Регистрация: 09.01.2008
Сообщений: 24,613
Репутация: 5352
По умолчанию

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


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



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

Попробовал так:
Код:

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, 17:03   #10
Alex11223
Модератор
Заслуженный модератор
 
Регистрация: 12.01.2011
Сообщений: 17,380
Репутация: 3353

icq: 512-765
skype: alexp.frl
По умолчанию

Цитата:
Сообщение от Serge_Bliznykov Посмотреть сообщение
Программа не устанет скачивать, чтобы проверить наличие?
Дык что скачивать-то если ее нет? Это ж невозможно физически )
Сервер скорее всего просто вернет 404 (или другую ошибку).
Alex11223 вне форума   Ответить с цитированием
Ответ

Опции темы

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

BB коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.

Быстрый переход

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


03:07.


Powered by vBulletin® Version 3.8.8 Beta 2
Copyright ©2000 - 2018, Jelsoft Enterprises Ltd.

RusProfile.ru


Справочник российских юридических лиц и организаций.
Проекты отопления, пеллетные котлы, бойлеры, радиаторы
интернет магазин respective.ru