Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > Delphi программирование > Общие вопросы Delphi
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 28.08.2012, 16:08   #11
Зод
Форумчанин
 
Регистрация: 25.08.2011
Сообщений: 140
По умолчанию

Цитата:
Сообщение от astecenko Посмотреть сообщение
Не понятно, почему Вы привязались к этому b-link, насколько я понял этот класс используется для форматирования ссылок вообще, коих в анализируемой странице куча. Даты форматируются классом b-date, почему бы не анализировать по нему.
Например: ваша искомая дата "9 июля" отформатирована так
Код:
<span class="b-date"><a href="http://clubs.ya.ru/4611686018427412111/replies.xml?item_no=48" class="b-link">9 июля 2010 года, 16:16</a></span>
Если посмотреть другие даты то увидим что они отформатированы аналогично:
Код:
<span class="b-date"><a href="*" class="b-link">*</a></span>
Что Вам мешает используя цикл по PosEx перебирать все соответствия маске
Код:
<span class="b-date"><a href="
Потом в теле цикла опять же с помощью PosEx находить первый символ ">" и первый символ "<" между ними и будет текст с датой. Так можете перебрать все даты на странице. Получив текст даты, тут же в цикле анализируйте его как Вам угодно. Итого у Вас будет 3 вызова функции PosEx для того чтобы найти дату (и т.д. в цикле). Ничего обрезать не надо.
попробовал я так, правда без цикла но все равно работает, сильно не тестировал но РАБОТАЕТ!

Цитата:
Сообщение от evg_m Посмотреть сообщение
Логика Pos в поиске именно в том месте где указали.

Код:
s:='1234567890174937483987493JPEG3648384578JPEG....JPEG53647csdsJPEG,,,JPEG';
А i2 чему равно??? НЕИЗВЕСТНО!!!! дальше мы работаем с неизвестными данными i2
i2:=Copy(i2,Pos('JPEG',i2)+2,20); // потому что ищем черт знает где странно что вообще что-то нашли!!!
а теперь еще и копируем незнамо-что !!!
i2:=Copy(i2,Pos('JPEG',i2)-1,Pos('JPEG',i2)+7); // продолжаем работать непойми с чем!!!!
Код:
s:='1234567890174937483987493JPEG3648384578JPEG....JPEG53647csdsJPEG,,,JPEG';
  i2:=s; //исправляем предыдущее замечание! (теперь знаем что лежит в i2)
// выводим результаты!!!!!!!!!
  self.Memo1.Lines.Add('I2: '+ I2);
  self.Memo1.Lines.Add(' Pos(''JPEG'',i2) ='+inttostr(Pos('JPEG',i2)));

  i2:=Copy(i2,Pos('JPEG',i2)+2,20);
// еще раз выводим !!!!!!!!!
  self.Memo1.Lines.Add('I2: '+ i2);
  self.memo1.lines.add(' Pos(''JPEG'',i2) =' +inttostr(Pos('JPEG',i2)));

  i2:=Copy(i2,Pos('JPEG',i2)-1,Pos('JPEG',i2)+7);
// еще раз выводим !!!!!!!!!
  self.Memo1.lines.Add('I2: ' +I2);
и смотрим результаты все ОК.
Код:
I2: 1234567890174937483987493JPEG3648384578JPEG....JPEG53647csdsJPEG,,,JPEG
 Pos('JPEG',i2) =26
I2: EG3648384578JPEG....
 Pos('JPEG',i2) =13
I2: 8JPEG....
ладно я пропустил, не i2 а s, это вроде очевидно было! Поскольку я задаю s строчку вроде можно понять было. и что теперь перестанет работать? Вечером даже на Делфи проверю с ОДНОЙ переменой и сложной) вот ради принципа проверю и сделаю процедуру поиска ТРЕТЬЕГО jpeg в строке. Что тогда будет? Будите доказывать что это не работает посколько сложно построено?)

Последний раз редактировалось Зод; 28.08.2012 в 16:14.
Зод вне форума Ответить с цитированием
Старый 28.08.2012, 17:38   #12
evg_m
Старожил
 
Регистрация: 20.04.2008
Сообщений: 5,526
По умолчанию

Цитата:
Будите доказывать что это не работает посколько сложно построено?
Нет, будем говорить сложно написано, значит сложно проверить.
при вложенных вызовах требуются доп. действия для анализа (проверки) промежуточных данных. А при большой лени (или неумении) проверять промежуточные данные и получаем заявления вида неверно работает Pos.
при использовании промежуточных переменных обычно все видно как на ладони и неверные идентификаторы не прячутся друг за друга.
программа — запись алгоритма на языке понятном транслятору

Последний раз редактировалось evg_m; 28.08.2012 в 17:40.
evg_m вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
copy pos Gudzik11 Общие вопросы Delphi 5 22.05.2012 08:57
if not Pos Shouldercannon Общие вопросы Delphi 9 01.02.2012 15:48
copy or pos(делфи) lama90 Помощь студентам 1 31.05.2011 18:17
pos и copy zotox Помощь студентам 1 23.10.2008 21:13