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

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

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

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 25.06.2009, 20:44   #1
mortira
 
Регистрация: 25.06.2009
Сообщений: 5
По умолчанию как осуществить такую логику

есть текстовый файл с таким содержимым:
PHP код:
d-keywords massage|beck|barenaked ladies|beck mongolian
field_3 
sFssf
Referer
http://www.127.0.0.1.com/
fq asdfsd
from 
Flower x
fullname 
Alsdf
full_name 
sdf
given 
Alaina|alaina |norma jean |Norma Jean|norma|mike|michael|nigel|billy jxcv
globalsearchkeyword 
barenaked ladies
goingto 
mfghmi|fghsingfghre
guess 
452
headline 
xcvxcv
hometown 
Kefghwna|Kafgps
http
://sdfsd.com/ = sdfsdf@|
http://sdf/bnl/ = sdf|coopfdjr
http://sdfsdf.jsp = BNL-ghd2|cosdf
login sdfsdg
http
://fgjfgj= afgj@hotfgj.com|ghjr9
http://ghjning.com/main/authorization/signIn = Version: 5.1.2600 SP3, Language: fghgf
Processfghfg.exe
-
http://ugh.com
adsfsd login dfdsfs
Referer
http://fghrs.com/
Keys:  4536056733461609  4536056733461609  4536056733461609 GetusBryan
Data
:

username=fgh
password
=fgh
Submit
=
http://www.fghfg.ca/login = afgha@hhfgail.com||shofhina@yafgh.com|cfghper
http://www.efghony.ca/singles/servlet/user/aboutme/info = shortalaina@yahoo 
+ много всякой ерунды.
надо вытащить только
http://ugh.com
username=fgh
password=fgh
login = sdfsdg
и больше ничего. кол-во строк неизвестно.
как можно такое осуществить?
какие параметры, операции использовать для этого?
mortira вне форума Ответить с цитированием
Старый 25.06.2009, 20:51   #2
NuMeR
Пользователь
 
Регистрация: 25.06.2009
Сообщений: 39
По умолчанию

для поиска username,password и login используйте функцию pos, а с адресом непонятно по каким параметрам нужно его выбирать

Последний раз редактировалось NuMeR; 25.06.2009 в 21:06.
NuMeR вне форума Ответить с цитированием
Старый 25.06.2009, 21:03   #3
rangel
Пользователь
 
Регистрация: 31.10.2007
Сообщений: 65
По умолчанию

примерно так наверное
загружаем в мемо
Код:
var
i,ii,iii,iiii,k:integer;
begin
Memo1.loadfromfile('...');
for k:=0 to memo1.lines.count -1 do begin
i:=pos('http://ugh.com',Memo1.lines[k]);
ii:=pos('username=fgh',Memo1.lines[k]);
iii:=pos('password=fgh',Memo1.lines[k]);
iiii:=pos('login = sdfsdg',Memo1.lines[k]);
if i<>0 then ...
if ii<>0 then ...
if iii<>0 then ...
if iiii<>0 then ...
end;
я не очен ьпонял твой вопрос...
rangel вне форума Ответить с цитированием
Старый 25.06.2009, 21:11   #4
mortira
 
Регистрация: 25.06.2009
Сообщений: 5
По умолчанию

это все пример. тут нужна логика.
http://тут все, что угодно.com
username=тут все, что угодно
password=тут все, что угодно
login = тут все, что угодно
так же есть ыпыпффpassword= - такое не надо
адрес.... только начиная с http:// и до окончания пути:
http://www.programmersforum.ru/showt...461#post297461
,но не
http://www.programmersforum.ru/showt...461#post297461 /аываывук23450928двоа

с Pos тоже вариант, но не получаются правильно условия создать, чтобы все что нужно вытащить.
как например вытащить ТОЛЬКО строку со словом 'учеба', а не ываывучебаыпып или учеба(*)*;

Последний раз редактировалось mortira; 25.06.2009 в 21:15.
mortira вне форума Ответить с цитированием
Старый 25.06.2009, 21:35   #5
Impuls1989
Форумчанин
 
Аватар для Impuls1989
 
Регистрация: 16.08.2008
Сообщений: 276
По умолчанию

Цитата:
Сообщение от mortira Посмотреть сообщение
с Pos тоже вариант, но не получаются правильно условия создать, чтобы все что нужно вытащить.
как например вытащить ТОЛЬКО строку со словом 'учеба', а не ываывучебаыпып или учеба(*)*;
Ну пробуйте так: if (pos('учеба',s) = 1) then <ваши действия>
Или например поставить 'password ' после слова password - стоит один пробел. Будет понятно что это слово стоит первым.
Или pos('password=',s)=1
А с адресом проблемма.
Заметил что перед строкой с адресом стоит '-'. Это так всегда?
Искусственный интеллект - фигня по сравнению с естественной глупостью
Impuls1989 вне форума Ответить с цитированием
Старый 25.06.2009, 21:57   #6
mortira
 
Регистрация: 25.06.2009
Сообщений: 5
По умолчанию

нет. не всегда. до и после может все что угодно
хотя с адресом легко, например if (pos('http:') <> 0) and not (pos('разный мусор') <> 0), сложности, например (по строкам):
http://www.programmersforum.ru/showthread.php - нужно
http://www.programmersforum.ru/showthread.php 2-4|5 235-23 23-59 - не нужно
http://www.programmersforum.ru/dsfsd.php sdfsdg sdgpassword fgdf -не нужно
password = ыпвпыв -нужно
passwordыпыфпы авпвап - не нужно
вот как тут составить?
if (pos('http:') <> 0) and not (pos('|') = 0) or (pos('password') <> 0) and not (pos('авпвап') <> 0)
с этим морока
mortira вне форума Ответить с цитированием
Старый 25.06.2009, 22:03   #7
NuMeR
Пользователь
 
Регистрация: 25.06.2009
Сообщений: 39
По умолчанию

а вы ищите не "password", а "password = "
NuMeR вне форума Ответить с цитированием
Старый 25.06.2009, 22:11   #8
Longedok
Пользователь
 
Аватар для Longedok
 
Регистрация: 14.07.2007
Сообщений: 40
По умолчанию

Это всё легко делается с помощью регулярных выражений. Могу посоветовать библиотеку TRegExpr (сайт).
Для url это будет выглядеть примерно так:
Код:
var
    regex: TRegExpr;
...
regex := TRegExpr.create();
regex.Expression := 'http://[^\s]*';
regex.Exec(fileText);
result := regex.Match[0];
regex.free;
для юезернэйма: 'username=[^\s]*'
и т.д.
Котэ покарает тебя, %username%!
Longedok вне форума Ответить с цитированием
Старый 25.06.2009, 22:17   #9
mortira
 
Регистрация: 25.06.2009
Сообщений: 5
По умолчанию

просто такое выражение может встречаться и в строке, которая мне не нужна, а с этими условиями такой гемор....
встречается и так и так.
а кто может объяснить НА ПРИМЕРАХ условия Pos: xor, and, < и т.п. поподробнее.
это все теперь одно целое
и будет ли работать вот так ----------------------------------------------- if ((pos('http:') <> 0) and not (pos('|') = 0))
и сравниваю с другим условием or (pos('password') <> 0) ?

Последний раз редактировалось mortira; 25.06.2009 в 22:20.
mortira вне форума Ответить с цитированием
Старый 25.06.2009, 22:39   #10
mortira
 
Регистрация: 25.06.2009
Сообщений: 5
По умолчанию

попробуем использовать TRegExpr.
mortira вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Как сделать такую программку C++ Kisia Помощь студентам 8 29.04.2009 12:56
Как осуществить запоминание объектов? Djem1991 Общие вопросы Delphi 4 06.01.2009 14:09
Как осуществить доступ к полю? Чайник87 Помощь студентам 2 13.10.2008 23:11
Тест на логику xTANATOSx Свободное общение 5 21.10.2007 16:39