Форум: "Начинающим";
Текущий архив: 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.068 c