Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "Начинающим";
Текущий архив: 2013.03.22;
Скачать: [xml.tar.bz2];

Вниз

Чем можно заменить AnsiPos?   Найти похожие ветки 

 
Pcrepair ©   (2012-07-11 16:43) [0]

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

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

Вопрос: какими способами это можно сделать, если есть похожий функционально код опубликуйте, если не трудно, в теме.


 
brother ©   (2012-07-11 16:45) [1]

список файлов в массив и перебором...
>   if (AnsiPos(".doc",s)=0) and (AnsiPos(".pdf",s)=0) (*тут
> еще надо
>      много затычек на десятки типов файлов*)

там точно анд? может ор?


 
brother ©   (2012-07-11 16:47) [2]

а не заметил, что в условии =0


 
AV ©   (2012-07-11 16:51) [3]

А не спасет даже перечисление всех вариантов - по запросу сервер может отдать что угодно. Пример -  zalil.ru

Только если попробовать пропускать разрешенное.
(AnsiPos(".html",s)=0)
and (AnsiPos(".htm",s)=0) и еще несколько


 
Pcrepair ©   (2012-07-11 16:57) [4]


> А не спасет даже перечисление всех вариантов - по запросу
> сервер может отдать что угодно. Пример -  zalil.ru

все немного проще, это страница ответа яндекс, там нет чего угодно
мне там нужны только ссылки, причем там нет явного указания на хтмл файл, может быть просто ggg.ru\jhg\


 
Медвежонок Пятачок ©   (2012-07-11 17:00) [5]

тут еще надо
     много затычек на десятки типов файлов*)


Создать списки фильтруемого в виде настроек.


 
AV ©   (2012-07-11 17:33) [6]


> все немного проще, это страница ответа яндекс, там нет чего
> угодно
> мне там нужны только ссылки, причем там нет явного указания
> на хтмл файл, может быть просто ggg.ru\jhg\

и что же?
пойдешь по ней - получишь вопрос, типа, куда сохранить файл
например, довольно быстро получил с яндекса результат http://zalil.ru/33563419


 
Pcrepair ©   (2012-07-11 18:35) [7]

ну и че? рано или поздно все возможные расширения файлов закончатся


 
Inovet ©   (2012-07-11 19:04) [8]

> [7] Pcrepair ©   (11.07.12 18:35)
> ну и че? рано или поздно все возможные расширения файлов закончатся

Тогда и обрабатывать их нет смысла.


 
Anatoly Podgoretsky ©   (2012-07-11 19:36) [9]


> ну и че? рано или поздно все возможные расширения файлов
> закончатся
> <Цитата>
> »

2^32!
Смеешься что ли?


 
Inovet ©   (2012-07-11 20:26) [10]

> [9] Anatoly Podgoretsky ©   (11.07.12 19:36)
> 2^32!

Что-то мало. Если только латиницей
26^256
или чколько там допускается.


 
Pcrepair ©   (2012-07-11 21:36) [11]

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


 
Омлет ©   (2012-07-11 22:53) [12]

Загони расширения в стринглист прямо из того отдельного файла, а потом
if extList.IndexOf(ExtractFileExt(fn)) < 0 then


 
Sha ©   (2012-07-11 23:47) [13]

> Pcrepair ©   (11.07.12 16:43)

Сколько ненужных расширений понятно.
А сколько нужных?


 
Германн ©   (2012-07-12 01:12) [14]


> если есть похожий функционально код опубликуйте

Автор в своём репертуаре :)
Другого способа делать программу, кроме "подлаживания" чужого кода к своему супер-пупер проекту не знает. Ну и как всегда рано или поздно начинает хамить. [11]


 
Pcrepair ©   (2012-07-12 08:41) [15]

Sha
все немного проще, это страница ответа яндекс, там нет чего угодно
мне там нужны только ссылки, причем там нет явного указания на хтмл файл, может быть просто ggg.ru\jhg\

германн ты тоже в своем репертуаре - умеешь только флудить в теме

Омлет - отдельное спасибо, буду пробовать


 
Anatoly Podgoretsky ©   (2012-07-12 08:48) [16]

Герману до тебя очень далеко


 
Sha ©   (2012-07-12 08:56) [17]

> Pcrepair ©   (12.07.12 08:41)

как связаны [15] и [0]?


 
Dimka Maslov ©   (2012-07-12 09:24) [18]

Если бы аффтар не был таким упоротым и начал с изучения основ сетевых протоколов, он бы уже давно знал, что тип файла определяется не через url, а через передаваемый сервером заголовок content-type, возможное содержимое которого действительно стандартизовано, задокументировано и легко доступно в сети в документе RFC 2046. Но аффтар такой упоротый и основы сетевых протоколов изучать всё равно не будет. Гугл пока может спать спокойно и не беспокоится о своём будущем, под которое копает аффтар.


 
AV ©   (2012-07-12 09:34) [19]


> Dimka Maslov ©   (12.07.12 09:24) [18]

хотел это предложить, но для этого надо
1. начать общение с сервером по каждой ссылке, т.е. получить заголовок
2. а если там страница со скриптом, которая автоматически перенаправит на файл?


 
Dimka Maslov ©   (2012-07-12 10:01) [20]


> AV ©   (12.07.12 09:34) [19]


1. Загловок получается через запрос HEAD
2. Браузеры как то справляются с перенаправляющими скриптами - они их выполняют, получают новую ссылку, новые заголовки и т.д.

Если мы хотим превзойти гугл, надо сначала повторить его функционал. Но и с этим, не зная чем заменить AnsiPos и почему Delphi сама собой волюнтаристски (извините за выражение) вызывает Free для TStrings, и прочая, прочая, прочая, нам не справиться.


 
AV ©   (2012-07-12 10:07) [21]


> Dimka Maslov ©   (12.07.12 10:01) [20]
> 1. Загловок получается через запрос HEAD

ну да,
но это все равно надо по каждой ссылке запросить его.


> 2. Браузеры как то справляются с перенаправляющими скриптами
> - они их выполняют, получают новую ссылку, новые заголовки
> и т.д.

воот..
а мы же, следуя из пункта 1, только HEAD спросили.


> Если мы хотим превзойти гугл

хотим, очень хотим. А что толку то..

> не зная чем заменить AnsiPos и почему Delphi сама собой
> волюнтаристски (извините за выражение) вызывает Free для
> TStrings, и прочая, прочая, прочая, нам не справиться.

а вот это - таки, да :)


 
Dimka Maslov ©   (2012-07-12 11:37) [22]


> AV ©   (12.07.12 10:07) [21]


Делаем HEAD. Если получаем редирект, делаем редирект. Если получаем нужный нам тип - поступаем соответствующим образом. Если получаем text/html запрашиваем GET, анализируем содержимое, ищем скрипт, выполняем его, если получаем редирект, начинаем всё сначала.

Щаз он коду запросит на всё на это и будет плеваться, не получив его, ибо это недели работы профессионала, а не ламера.



Страницы: 1 вся ветка

Форум: "Начинающим";
Текущий архив: 2013.03.22;
Скачать: [xml.tar.bz2];

Наверх




Память: 0.5 MB
Время: 0.077 c
15-1346322658
Артём
2012-08-30 14:30
2013.03.22
Как программно нажать на кнопку на сайте?


15-1328942551
AV
2012-02-11 10:42
2013.03.22
Нужен ли XP mode, если на семерку хочу виртуалку поставить?


15-1339744950
RWolf
2012-06-15 11:22
2013.03.22
Древовидный редактор настроек


15-1334134947
xss22
2012-04-11 13:02
2013.03.22
Утечки памяти в TStringList::GetText()


1-1300455452
TStas
2011-03-18 16:37
2013.03.22
Как получить версию Экселя?





Afrikaans Albanian Arabic Armenian Azerbaijani Basque Belarusian Bulgarian Catalan Chinese (Simplified) Chinese (Traditional) Croatian Czech Danish Dutch English Estonian Filipino Finnish French
Galician Georgian German Greek Haitian Creole Hebrew Hindi Hungarian Icelandic Indonesian Irish Italian Japanese Korean Latvian Lithuanian Macedonian Malay Maltese Norwegian
Persian Polish Portuguese Romanian Russian Serbian Slovak Slovenian Spanish Swahili Swedish Thai Turkish Ukrainian Urdu Vietnamese Welsh Yiddish Bengali Bosnian
Cebuano Esperanto Gujarati Hausa Hmong Igbo Javanese Kannada Khmer Lao Latin Maori Marathi Mongolian Nepali Punjabi Somali Tamil Telugu Yoruba
Zulu
Английский Французский Немецкий Итальянский Португальский Русский Испанский