|
|
Регистрация | << Правила форума >> | 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) Жизнь такова какова она есть и больше никакова. Помогаю за спасибо. |