![]() |
|
|
|||||||
| Регистрация | << Правила форума >> | FAQ | Пользователи | Календарь | Поиск | Сообщения за сегодня | Все разделы прочитаны |
![]() |
|
|
Опции темы | Поиск в этой теме | Опции просмотра |
|
#1
|
|||
|
|||
|
Проверял программу и наткнулся на следующее, если при парсенге мы знаем что нужное нам слово состоит из 5 символов, то это good, а если меньше или больше как тогда поступить?
Ниже приведён код парсера которым подилился со мной pesi PHP код:
|
|
#2
|
||||
|
||||
|
Код:
B:= Pos('SRC="', ss)+5;Функция Pos возвратит позицию начала искомой строки SRC=", но поскольку вас интересует то что заключено в кавычки после этой строки, то там и добавляется длина SRC=" т.е. 5 символов, а уж какой длины слово между ковычками в коде не оговаривается. |
|
#3
|
|||
|
|||
|
ну всё таки как узнать какой длинны слово в 'SRC="..."'
|
|
#4
|
||||
|
||||
|
E-B и будет длина слова.
|
|
#5
|
|||
|
|||
|
так E-B у меня тут стоит Result:= Copy(ss, B, E-B); или я что не понял?
Последний раз редактировалось bulldog, 22.08.2010 в 00:10. |
|
#6
|
||||
|
||||
|
Функция Copy возвращает строку длиной E-B, а длина строки будет E-B это число
Почуствуйте разницу. ![]() |
|
#7
|
|||
|
|||
|
B у меня 5 исмволов, а Е концовка, получается мне нада только убрать +5?
|
|
#8
|
||||
|
||||
|
А почему В равна 5?
Код:
function PosSrc(S: String): String;
const
Scr = 'src="';
var
B, E: Integer;
begin
B:= Pos(Scr, S) +Length(Scr); { ищим Scr в S и прибавляем длинну Scr }
{ функция PosEx идентична Pos но она может искать с указанной позиции }
E:= PosEx('"', S, B); { здесь ищем '"' в S. Третий параметр тобишь "B"
указывает на то с какой позиции начать поиск, вот для чего мы прибавляли длинну Scr
если бы мы этого не сделали то PosSrc вернула бы "src="}
Result:= Copy(S, B, E-B); { копируем:
"S" это строка из которой копируем,
"B" здесь равна 22,
"E" равна 36.
Тобишь "B" указывает с какой позиции копировать
"E-B" сколько символов скопировать(от 36 отняли 22 получили 14)}
end;
procedure TForm1.Button1Click(Sender: TObject);
var
a: string;
begin
a:= '<img id="login" src="newcaptcha.php" width="80" height="20"';
memo1.Text:= PosSrc(a);
end; |
|
#9
|
|||
|
|||
|
Я про то что мне заведомо неизвестна длина интересующей меня ссылки,
[] a:= '<img id="login" src="newcaptcha.php" width="80" height="20"'; [/] это капча и так понятно, но меня интересует именно то что ссылка может содержать от 4 до 9 мож и больше символов, вот и спрашиваю есть ли способ при парсенге канкретней узнать её длинну, что бы выцыпить |
|
#10
|
||||
|
||||
|
А разве тут известно какой она длинны???
|
|
#11
|
||||
|
||||
|
Не, ну блин такое впечатление, что общаются слепой с глухим, я уже не знаю как еще объяснить. Функия function PosSrc(ss: String): String; которую вы-же и давали возвращает ссылку независимо от ее длины. Функция ориентируется по ключевому слову src и кавычкам. Для примера:
Код:
a := PosSrc('<img id="login" src="newcaptcha.php" width="80" height="20"');для такой строки: Код:
a := PosSrc('<img id="login" src="123.php" width="80" height="20"'); |
|
#12
|
|||
|
|||
|
И я про тоже, тем более что ссылку на капчу я в пример давал, вот что канкретно меня интересует
view.php?ad=3237 view.php?ad=37 view.php?ad=64237 view.php?ad=129 view.php?ad=1237 вот как мне это опредилить?При том что я ищу по маске view.php?ad= Последний раз редактировалось bulldog, 23.08.2010 в 19:13. |
|
#13
|
||||
|
||||
|
Сначала разберись с Copy, Pos, PosEx, Delete, а потом дальше лезь
|
|
#14
|
|||
|
|||
|
До сих пор использую этот код, т.к. парсер не могу настроить
Код:
while Pos('view.php?ad=',str)>0 do begin
ListView1.Items[0].SubItems.Append(Copy(str,Pos('view.php?ad=',str)+12,7));
Delete(str,1, Pos('view.php?ad=',str)+12); |
|
#15
|
||||
|
||||
|
Немножко не так:
Код:
Copy(str,Pos('view.php?ad=',str)+12,7) |