Модераторы: Snowy, MetalFan, bems, Poseidon
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Чем можно заменить AnsiPos? Чем можно заменить AnsiPos? 
:(
    Опции темы
Pcrepair
Дата 11.7.2012, 15:47 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


Профиль
Группа: Участник
Сообщений: 209
Регистрация: 16.1.2011

Репутация: нет
Всего: нет



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

Код

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?), что бы изменять список запретов оперативно и без перекомпиляции программы целиком

Вопрос: какими способами это можно сделать, если есть похожий функционально код опубликуйте, если не трудно, в теме.
--------------------
Сборник рабочего кода Процедур и Функций DelPhi     http://validcoderepo.narod.ru/
PM MAIL WWW   Вверх
XperT
Дата 11.7.2012, 16:43 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 269
Регистрация: 19.8.2006

Репутация: нет
Всего: 4



Почитайте о регулярных выражениях
PM MAIL   Вверх
Данкинг
Дата 11.7.2012, 16:44 (ссылка)    | (голосов:1) Загрузка ... Загрузка ... Быстрая цитата Цитата


Yersinia pestis
****


Профиль
Группа: Завсегдатай
Сообщений: 8302
Регистрация: 7.11.2006
Где: მოსკოვი

Репутация: 11
Всего: 130



Я, как обычно, сделал бы список расширений в табличке DBF, и в ней уже искал.


--------------------
There's nothing left but silent epitaphs.
PM MAIL WWW   Вверх
Ne1tr1n0
Дата 11.7.2012, 17:12 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 120
Регистрация: 1.3.2009

Репутация: нет
Всего: 8



Можно вынести список расширений в файл, необязательно INI, можно и просто в текстовом файле хранить, грузить потом из него в TStringList, потом циклом пробегаться по нему, если встретилось расширение в списке запрещенных, сразу же выходить из цикла (Break), перед тем же как добавлять в список, у тебя T4.Add(s), делать проверку если переменная последнего цикла меньше чем кол-во элементов в списке запрещенных расширений, то значит выход из цикла был совершен досрочно, => данный урл не попадает под оговариваемые условия и добавлять его не надо. Либо флаг какой завести, и в цикле проверки расширений его выставлять. А после цикла уже смотреть этот флаг.

То есть должно получиться что-то типа такого:
Код

var
  s: string;
  n, a: Integer;
  Ini: TStringList;
begin
try
  s:='http://forum.wingrad.ru.pdf';
  Ini:=TStringList.Create;
  Ini.LoadFromFile('C:\restricted_exts.txt');

  for n := 0 to Ini.Count - 1 do
  begin
    if AnsiPos(Ini[n],s) <> 0 then
      Break;
  end;

  if Not (n = Ini.Count) then
    ShowMessage('Restricted extension found') //здесь должны быть T4.Add(s) и т.д.
  else
    ShowMessage('Restricted extension not found')
finally
  Ini.Free;
end;

Только это слабенькая защитка такая получается. На сайтах типа http://www.pdftoword.com не сработает или https://www.docs.google.com/gview тоже пример.
PM MAIL   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "Delphi: Для новичков"
SnowyMetalFan
bemsPoseidon
Rrader

Запрещается!

1. Публиковать ссылки на вскрытые компоненты

2. Обсуждать взлом компонентов и делиться вскрытыми компонентами

  • Литературу по Дельфи обсуждаем здесь
  • Действия модераторов можно обсудить здесь
  • С просьбами о написании курсовой, реферата и т.п. обращаться сюда
  • Вопросы по реализации алгоритмов рассматриваются здесь
  • 90% ответов на свои вопросы можно найти в DRKB (Delphi Russian Knowledge Base) - крупнейшем в рунете сборнике материалов по Дельфи


Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, Snowy, MetalFan, bems, Poseidon, Rrader.

 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | Delphi: Для новичков | Следующая тема »


 




[ Время генерации скрипта: 0.0451 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.