Форум по Delphi программированию

Delphi Sources



Вернуться   Форум по Delphi программированию > Все о Delphi > [ "Начинающим" ]
Ник
Пароль
Регистрация <<         Правила форума         >> FAQ Пользователи Календарь Поиск Сообщения за сегодня Все разделы прочитаны

Ответ
 
Опции темы Поиск в этой теме Опции просмотра
  #1  
Старый 25.11.2010, 10:37
MrDiG MrDiG вне форума
Начинающий
 
Регистрация: 05.10.2010
Сообщения: 112
Репутация: 1227
По умолчанию Распарсить простую строку

Помогите, пожалуйста, распарсить строку через copy & pos:
<input type='hidden' name='k' value='34212'>
Нужно получить 34212. Регуляркой решается просто, но их подключать не хочу: cлишком уж монструозное решение будет, да и тем более в комплекте у меня только VBScript_RegExp_55_TLB, а сторонние я не люблю. Имеется в виду, что эта строка находится в переменной, в которой вся полученная страница...

Последний раз редактировалось MrDiG, 25.11.2010 в 10:40.
Ответить с цитированием
  #2  
Старый 25.11.2010, 10:47
Аватар для Страдалецъ
Страдалецъ Страдалецъ вне форума
Гуру
 
Регистрация: 09.03.2009
Адрес: На курорте, из окна вижу теплое Баренцево море. Бррр.
Сообщения: 4,723
Репутация: 52347
По умолчанию

как-то так:
Код:
1
copy(s, pos('value=',s)+6, Length(s)-pos('value=',s)+6);
__________________
Жизнь такова какова она есть и больше никакова.
Помогаю за спасибо.
Ответить с цитированием
  #3  
Старый 25.11.2010, 10:52
MrDiG MrDiG вне форума
Начинающий
 
Регистрация: 05.10.2010
Сообщения: 112
Репутация: 1227
По умолчанию

Спасибо
Ответить с цитированием
  #4  
Старый 25.11.2010, 10:57
Аватар для Страдалецъ
Страдалецъ Страдалецъ вне форума
Гуру
 
Регистрация: 09.03.2009
Адрес: На курорте, из окна вижу теплое Баренцево море. Бррр.
Сообщения: 4,723
Репутация: 52347
По умолчанию

Там только надо не +6 а -6
__________________
Жизнь такова какова она есть и больше никакова.
Помогаю за спасибо.
Ответить с цитированием
  #5  
Старый 25.11.2010, 11:26
MrDiG MrDiG вне форума
Начинающий
 
Регистрация: 05.10.2010
Сообщения: 112
Репутация: 1227
По умолчанию

Я уже понял. Твой пример натолкнул меня, как делать правильно, но проблема осталась. Размер этого значения меняется, да и скорость хромает. Решил вернуться к регулярке. Вот только не могу с экранированием кавычек разобраться.

Допустим
Reg.Pattern := 'name='k' value='(.*)'>';

Как экранировать кавычки вокруг k и вокруг значения?
Ответить с цитированием
  #6  
Старый 25.11.2010, 11:47
MrDiG MrDiG вне форума
Начинающий
 
Регистрация: 05.10.2010
Сообщения: 112
Репутация: 1227
По умолчанию

Усё! Поступил тупо, но работает
Reg.Pattern := 'name=[^\s]k[^\s] value=[^\s](.*)[^\s]>';
Ответить с цитированием
  #7  
Старый 25.11.2010, 13:10
Аватар для Bargest
Bargest Bargest вне форума
Профессионал
 
Регистрация: 19.10.2010
Адрес: Москва
Сообщения: 2,390
Версия Delphi: XE3/VS12/FASM
Репутация: 14665
По умолчанию

можно впринципе так:
Код:
1
2
delete(s,1,pos('value='+#$27,s)+7);
copy(s,1,pos(#$27,s));
где #$27 - код символа '.
7 - длина строки, которую ищем.
Вроде так.
__________________
jmp $ ; Happy End!
The Cake Is A Lie.
Ответить с цитированием
  #8  
Старый 25.11.2010, 14:52
MrDiG MrDiG вне форума
Начинающий
 
Регистрация: 05.10.2010
Сообщения: 112
Репутация: 1227
По умолчанию

Спасибо за решение, но уже сделал на регулярке, ибо скорость в моём случае критична.
Ответить с цитированием
Ответ


Delphi Sources

Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск
Опции просмотра

Ваши права в разделе
Вы не можете создавать темы
Вы не можете отвечать на сообщения
Вы не можете прикреплять файлы
Вы не можете редактировать сообщения

BB-коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.
Быстрый переход


Часовой пояс GMT +3, время: 09:32.


 

Сайт

Форум

FAQ

Соглашения

Прочее

 

Copyright © Форум "Delphi Sources" by BrokenByte Software, 2004-2025