Форум программистов, компьютерный форум, киберфорум
Наши страницы

Delphi и сети

Войти
Регистрация
Восстановить пароль
 
 
lis5131
3 / 3 / 0
Регистрация: 27.05.2012
Сообщений: 174
#1

Проверка ссылки на файл - Http - Delphi

20.03.2015, 12:01. Просмотров 883. Ответов 23
Метки нет (Все метки)

Ситуация такая. Есть хост загрузки типа народа.
Как сделать проверку ссылки - а именно целностность файла.
Ситуация такая - мне нужно знать какой файл удален, а какой нет.
В инете искал не чего не нашел.
Ссылки выглядят так:
Порядка 3000 штук.
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
20.03.2015, 12:01
Я подобрал для вас темы с готовыми решениями и ответами на вопрос Проверка ссылки на файл - Http (Delphi):

Кнопка,файл и ссылки - Delphi
Здравствуйте. Мне нужно сделать кое какую программу: Имеется файл links.txt в ней хранятся ссылки,каждая ссылка с новой строки. Как...

Как добавить http авторизацию (http authorization header) при работе с web-сервисом? - Delphi
Добрый день! Проблема такая. Есть веб-сервис который при подключения требует авторизацию. Скачал wsdl, создал pas. Но для авторизации...

Как достать ссылки из Memo1 в Memo2 ссылки только которые оканчиваются на *.jpg *.gif - Delphi
mmo1.Lines.Text:= idhtp1.Get('http://m.vk.com/album138983341_195657842'); этот код показывает содержимое html страницы...

Сканирование ссылки http://example/ - Программирование Android
Как сделать проверку именно определённой части http,допустим: http://example.com/file35 http://example.com/example61 ...

Как открывать ссылки такого типа http - Удаление вирусов
Добрый вечер, с недавнего времени меня начал мешать работать какой-то вирус. Каждые 20 минут поверх всех программ (полноэкранные...

Как вы хотите открывать ссылки такого типа (http) - Удаление вирусов
Добрый день, с недавнего времени меня начал мешать работать какой-то вирус реклама. Каждые 40-60 минут поверх всех программ и игр...

23
volvo
Супер-модератор
Эксперт Pascal/DelphiАвтор FAQ
25535 / 17088 / 5416
Регистрация: 22.10.2011
Сообщений: 30,257
Записей в блоге: 7
21.03.2015, 16:56 #16
Delphi
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
type
  TChecker = class(TThread)
  private
    FFileName: string;
    FMemo: TMemo;
 
    FResponse, FURL : string;
    procedure Update;
  protected
    procedure Execute; override;
  public
    constructor Create(const AFileName: string; const AMemo: TMemo);
  end;
 
// реализация
 
procedure TChecker.Update;
begin
  if pos('Скачать бесплатно', FResponse) > 0 then
    FMemo.Lines.Add('Все ОК - файл есть!')
  else
    FMemo.Lines.Add('Ошибка! Файл ' + FURL + ' - удален!');
end;
 
procedure TChecker.Execute;
var
  HTTP: TIdHTTP;
  URLs: TStringList;
  i: Integer;
  Response: string;
begin
  HTTP := TIdHTTP.Create(nil);
  URLs := TStringList.Create;
  try
    URLs.LoadFromFile(FFileName);
    if (URLs.Count > 0) then
      for i := 0 to URLs.Count - 1 do
      begin
        FURL := URLs[i];
        FResponse := HTTP.Get(FURL);
        Synchronize(Update);
      end;
  finally
    FreeAndNil(HTTP);
    FreeAndNil(URLs);
  end;
end;
, остальное - без изменений
1
Sigin
221 / 221 / 69
Регистрация: 20.10.2013
Сообщений: 808
Завершенные тесты: 4
21.03.2015, 19:50 #17
volvo, FResponse не присваивается нигде, и, как следствие, все ссылки будут "битые".
Delphi
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
type
  TChecker = class(TThread)
  private
    FFileName, FResponse, FURL: string;
    FMemo: TMemo;
    procedure Update;
  protected
    procedure Execute; override;
  public
    constructor Create(const AFileName: string; const AMemo: TMemo);
  end;
 
implementation
 
{ TChecker }
 
constructor TChecker.Create;
begin
  FFileName := AFileName;
  FMemo := AMemo;
  FreeOnTerminate := True;
  inherited Create(False);
end;
 
procedure TChecker.Update;
begin
  if pos('Скачать бесплатно', FResponse) > 0 then
    FMemo.Lines.Add('Все ОК - файл есть!')
  else
    FMemo.Lines.Add('Ошибка! Файл ' + FURL + ' - удален!');
end;
 
procedure TChecker.Execute;
var
  HTTP: TIdHTTP;
  URLs: TStringList;
  i: Integer;
begin
  HTTP := TIdHTTP.Create(nil);
  URLs := TStringList.Create;
  try
    URLs.LoadFromFile(FFileName);
    if (URLs.Count > 0) then
      for i := 0 to URLs.Count - 1 do
      begin
        FResponse := HTTP.Get(URLs[i]);
        FURL := URLs[i];
        Synchronize(Update);
      end;
  finally
    FreeAndNil(HTTP);
    FreeAndNil(URLs);
  end;
end;
lis5131, да, просто переименуйте:'Vcl.Forms.dcu' в 'Forms.dcu'
0
lis5131
3 / 3 / 0
Регистрация: 27.05.2012
Сообщений: 174
24.03.2015, 20:36  [ТС] #18
Я тут немного поэксперементировал. Огромное спасибо за помощь.
Вот что у меня вышло:
Delphi
1
2
3
4
5
6
7
8
9
10
11
12
13
14
   
URL - перебор ссылок - у меня Excel
    try
URLs:= Utf8ToAnsi(IdHTTP.get(URL));
     if pos('Скачать файл', URLs) > 0 then begin
      Memo1.Lines.Add(URL + ' - ок');
     end
     else
     begin
      Memo1.Lines.Add(URL + ' - Удалён!');
     end;
    finally
     FreeAndNil(HTTP);
    end;
Разве так не проще?
0
volvo
Супер-модератор
Эксперт Pascal/DelphiАвтор FAQ
25535 / 17088 / 5416
Регистрация: 22.10.2011
Сообщений: 30,257
Записей в блоге: 7
24.03.2015, 20:47 #19
Цитата Сообщение от lis5131 Посмотреть сообщение
так не проще?
Так - это как? Прямо в Execute? Проще. Но потом не удивляйся, когда программа начнет глючить. Изменения потоконебезопасных компонентов (а Memo - не является потокобезопасным) - только в контексте основного потока приложения (например, через Synchronize)
0
lis5131
3 / 3 / 0
Регистрация: 27.05.2012
Сообщений: 174
24.03.2015, 21:15  [ТС] #20
volvo, нет через Utf8ToAnsi,
В данном случае я рассматриваю чисто запрос Utf8ToAnsi(IdHTTP.get(URL)).
Что тут может глючить?
0
Sigin
221 / 221 / 69
Регистрация: 20.10.2013
Сообщений: 808
Завершенные тесты: 4
24.03.2015, 21:34 #21
Цитата Сообщение от lis5131 Посмотреть сообщение
Разве так не проще?
Проще, но при этом будет фризить форму, если тебя это устраивает - валяй. Я же привел вариант без фризов. Имхо, а зачем Utf8ToAnsi?

Не по теме:

Все время сколько себя помню не понимал смысл зачем так делать:

Цитата Сообщение от lis5131 Посмотреть сообщение
begin
Memo1.Lines.Add(URL + ' - ок');
end

0
lis5131
3 / 3 / 0
Регистрация: 27.05.2012
Сообщений: 174
24.03.2015, 23:31  [ТС] #22
Цитата Сообщение от nestquik2 Посмотреть сообщение
Все время сколько себя помню не понимал смысл зачем так делать:
Очень просто - ты видишь ссылку какую надо перезалить или не надо. В ссылке находится название темы. Соответственно ты видишь какая из тем сдохла. Так же как у тебя URLs. FMemo.Lines.Add(URLs[i] +'- файл есть!')

Цитата Сообщение от nestquik2 Посмотреть сообщение
Я же привел вариант без фризов.
Можно об этом поподробней?
А то в моих знаниях фриз - древнее германское племя.
0
Sigin
221 / 221 / 69
Регистрация: 20.10.2013
Сообщений: 808
Завершенные тесты: 4
24.03.2015, 23:37 #23
Цитата Сообщение от lis5131 Посмотреть сообщение
Очень просто - ты видишь ссылку какую надо перезалить или не надо. В ссылке находится название темы. Соответственно ты видишь какая тем сдохла. Так же как у тебя URLs. FMemo.Lines.Add(URLs[i] +'- файл есть!')
я имел ввиду:
Delphi
1
2
3
4
5
6
7
8
if (булево значение) then
  begin
    1 действие;
  end
  else
  begin
    1 действие;
  end;
Ведь можно писать, и даже быстрее:
Delphi
1
2
3
4
  if (булево значение) then
    1 действие
  else
    1 действие;
freeze (с англ.) - заморозить. Форма становится "неактивной" и не реагирует, либо реагирует но с задержкой на нажатия или прочие события.
1
lis5131
3 / 3 / 0
Регистрация: 27.05.2012
Сообщений: 174
25.03.2015, 13:58  [ТС] #24
nestquik2, спасибо.
Сегодня прогнал 2800 ссылок (один раздел).
Да есть такое - во время вывода ссылки и подтверждения - работа программы (я про свою), вывод отчёта, идет рывками.
бывает замирает на секунду.
nestquik2, просто я привык писать выбор полностью - это моя дурная привычка.
ОГРОМНОЕ СПАСИБО ЗА ВНИМАНИЕ И ПОМОЩЬ.
0
25.03.2015, 13:58
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
25.03.2015, 13:58
Привет! Вот еще темы с ответами:

Как вы хотите открывать ссылки такого типа (http)? - Удаление вирусов
Опять я вляпался в эту фигню, скачал типо "Wall Hack для CS GO" а на деле вирусняк. Вот лог и скриншот

Как вы хотите открывать ссылки такого типа (http) - Удаление вирусов
Поможите люди добрыя. Вот лог SecurityCheck: SecurityCheck by glax24 & Severnyj v.1.4.0.46 WebSite: www.safezone.cc DateLog:...

Как вы хотите открывать ссылки такого типа (http) - Удаление вирусов
Доброго времени суток, с недавнего времени меня начал мешать работать какой-то вирус. Каждые 20 минут поверх всех программ (полноэкранные...

Как вы хотите открывать ссылки такого типа (http) - Удаление вирусов
Добрый день такая вот проблема каждые 20 минут выскакивает как вы хотите открыть (http) ссылку


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
24
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2018, vBulletin Solutions, Inc.
Рейтинг@Mail.ru