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

Delphi Sources



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

Ответ
 
Опции темы Поиск в этой теме Опции просмотра
  #1  
Старый 11.07.2012, 16:44
Pcrepair
 
Сообщения: n/a
По умолчанию Чем можно заменить AnsiPos?

Добрый день. Есть код

Код:
begin
    s:=Copy(HtmlCode,j,k-j);
    if (AnsiPos('http:',s)>0) or (AnsiPos('https:',s)>0) then
    if (AnsiPos('.doc',s)=0) and (AnsiPos('.pdf',s)=0) (*тут еще надо 
       много затычек на десятки типов файлов*)
    then
    T4.Add(s);
    i:=k;
    break;
end;
Код пропускает только строки содержащие http: и https: и не пропускает строки содержащие ссылку на закачку файла doc или pdf. но типов файлов может быть несколько десятков, не хотелось бы код типа (AnsiPos('.doc',s)=0) повторять десятки раз. кроме того желательно вынести наименования типов файлов в отдельный файл (типа INI?), что бы изменять список запретов оперативно и без перекомпиляции программы целиком

Вопрос: какими способами это можно сделать, если есть похожий функционально код опубликуйте, если не трудно, в теме.
Ответить с цитированием
  #2  
Старый 11.07.2012, 17:01
Rat Rat вне форума
Активный
 
Регистрация: 12.09.2008
Сообщения: 391
Репутация: 6078
По умолчанию

Массивом, циклом и or.

А еще лучше регулярными выражениями. Но это по желанию.
Ответить с цитированием
  #3  
Старый 11.07.2012, 17:02
Аватар для NumLock
NumLock NumLock вне форума
Let Me Show You
 
Регистрация: 30.04.2010
Адрес: Северодвинск
Сообщения: 5,426
Версия Delphi: 7, XE5
Репутация: 59586
По умолчанию

имхо, правильнее протокол проверять через AnsiStartsText.
класс TIniFile, метод:
Код:
procedure ReadSection(const Section: string; Strings: TStrings); override;
загрузить во временный TStringList и в цикле по Strings[] через AnsiEndsText проверять расширение.
Код:
uses
  StrUtils, IniFiles,
__________________
Пишу программы за еду.
__________________
Ответить с цитированием
  #4  
Старый 11.07.2012, 17:04
Аватар для M.A.D.M.A.N.
M.A.D.M.A.N. M.A.D.M.A.N. вне форума
Sir Richard Abramson
 
Регистрация: 05.04.2008
Сообщения: 5,505
Версия Delphi: XE10
Репутация: выкл
По умолчанию

См. последнюю ссылку в подписи.
__________________
— Как тебя понимать?
— Понимать меня не обязательно. Обязательно меня любить и кормить вовремя.


На Delphi, увы, больше не программирую.
Рекомендуемая литература по программированию
Ответить с цитированием
  #5  
Старый 12.07.2012, 11:54
Rat Rat вне форума
Активный
 
Регистрация: 12.09.2008
Сообщения: 391
Репутация: 6078
По умолчанию

Если это блокиратор скачивания файлов, то он не правильно построен. Ибо расширение по показатель. Куча сайтов предлагают тебе скачать то же самое, но с расширением txt например, или jpg. Потом переименовываешь и все. Нужно по содержимому блокировать.
Ответить с цитированием
  #6  
Старый 12.07.2012, 13:25
Аватар для ALexandr555
ALexandr555 ALexandr555 вне форума
Специалист
 
Регистрация: 09.10.2010
Адрес: Тольятти
Сообщения: 803
Версия Delphi: Delphi 7
Репутация: 2064
По умолчанию

Цитата:
Сообщение от M.A.D.M.A.N.
См. последнюю ссылку в подписи.
онлайн справка по дельфи?
Ответить с цитированием
  #7  
Старый 12.07.2012, 13:33
Аватар для ~TB~
~TB~ ~TB~ вне форума
Начинающий
 
Регистрация: 17.02.2006
Адрес: Казахстан
Сообщения: 172
Версия Delphi: XE
Репутация: 1500
По умолчанию

Цитата:
Сообщение от Rat
Если это блокиратор скачивания файлов, то он не правильно построен. Ибо расширение по показатель. Куча сайтов предлагают тебе скачать то же самое, но с расширением txt например, или jpg. Потом переименовываешь и все. Нужно по содержимому блокировать.

А как тогда блокировать, когда файл еще не скачан и нет возможности прочитать заголовок? Когда пользователь только начинает закачку?

Цитата:
онлайн справка по дельфи?
Понятно же, что он имел ввиду регулярки идущие последней строчкой.
__________________
00110001 00101100 00110110 00110001 00111000 00110000 00110011 00110011 00111001 00111000 00111000 00110111 00110100 00111001 00111000 00111001 00110100 00111000 00110100 00111000 00110010 00110000 00110100 00110101 00111000 00110110 00111000 00110011 00110100 00110011 00110110 00110101 00110110
Ответить с цитированием
  #8  
Старый 12.07.2012, 16:28
Rat Rat вне форума
Активный
 
Регистрация: 12.09.2008
Сообщения: 391
Репутация: 6078
По умолчанию

Весь вопрос, вообще как Вы видете работу пользователя с Вашей программой. Насколько я понимаю, это что то типа прокси?
Ответить с цитированием
  #9  
Старый 13.07.2012, 08:31
Pcrepair
 
Сообщения: n/a
По умолчанию

Rat
к прокси не имеет никакого отношения
просто нужно в массиве строк полученном из ПМ (в ответ на запрос по словам поиска):
- оставить только строки с УРЛ(сделано)
- не пропустить строки с УРЛ, но заканчивающиеся на имя файла с расширением ДОК ПДФ и прочие картинки(тоже в общем сделано, но нужно улучшить - смотри топик)

далее эти строки с УРЛ пойдут в ТВеббраузер для закачки и анализа страницы. при этом если УРЛ будет заканчиваться на файл.док(к примеру) - выскочит таблица из браузера с предложением сохранить-открыть файл, что требует вмешательства оператора, а программа то должна работать в автомате
теперь понятнее о чем речь?
Ответить с цитированием
  #10  
Старый 13.07.2012, 09:55
Аватар для ~TB~
~TB~ ~TB~ вне форума
Начинающий
 
Регистрация: 17.02.2006
Адрес: Казахстан
Сообщения: 172
Версия Delphi: XE
Репутация: 1500
По умолчанию

Цитата:
Сообщение от Pcrepair
Rat
к прокси не имеет никакого отношения
просто нужно в массиве строк полученном из ПМ (в ответ на запрос по словам поиска):
- оставить только строки с УРЛ(сделано)
- не пропустить строки с УРЛ, но заканчивающиеся на имя файла с расширением ДОК ПДФ и прочие картинки(тоже в общем сделано, но нужно улучшить - смотри топик)

далее эти строки с УРЛ пойдут в ТВеббраузер для закачки и анализа страницы. при этом если УРЛ будет заканчиваться на файл.док(к примеру) - выскочит таблица из браузера с предложением сохранить-открыть файл, что требует вмешательства оператора, а программа то должна работать в автомате
теперь понятнее о чем речь?

Оу. Теперь все ясно. Короче, для твоей проблемы - "чем заменить AnsiPos" ответ, как уже писал тут товарищ M.A.D.M.A.N. - юзать регулярные выражения. Создаешь список файловых екстеншионов, пишешь регулярку для опознания конца ссылки и в цикле гоняешь ее подставляя значения из списка. Как-то так.
__________________
00110001 00101100 00110110 00110001 00111000 00110000 00110011 00110011 00111001 00111000 00111000 00110111 00110100 00111001 00111000 00111001 00110100 00111000 00110100 00111000 00110010 00110000 00110100 00110101 00111000 00110110 00111000 00110011 00110100 00110011 00110110 00110101 00110110
Ответить с цитированием
  #11  
Старый 13.07.2012, 09:57
Аватар для M.A.D.M.A.N.
M.A.D.M.A.N. M.A.D.M.A.N. вне форума
Sir Richard Abramson
 
Регистрация: 05.04.2008
Сообщения: 5,505
Версия Delphi: XE10
Репутация: выкл
По умолчанию

От путнего анонимайзера наврятли спасет.
__________________
— Как тебя понимать?
— Понимать меня не обязательно. Обязательно меня любить и кормить вовремя.


На Delphi, увы, больше не программирую.
Рекомендуемая литература по программированию
Ответить с цитированием
  #12  
Старый 13.07.2012, 15:35
Pcrepair
 
Сообщения: n/a
По умолчанию

Цитата:
Создаешь список файловых екстеншионов, пишешь регулярку для опознания конца ссылки и в цикле гоняешь ее подставляя значения из списка. Как-то так.

насчет циклов было сразу понятно. собственно представленный код - кусочек цикла. просто раньше бывали случаи когда нагромождения самопального кода заменялись одной встроенной функцией или процедурой Делфи. а может есть еще какие то варианты, типа массивы использовать, или как то класс ИНИ. в общем чтоб было проще и лучше
вот об этом был вопрос
Ответить с цитированием
Ответ


Delphi Sources

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

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

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

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


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


 

Сайт

Форум

FAQ

RSS лента

Прочее

 

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

ВКонтакте   Facebook   Twitter