Модераторы: Snowy, MetalFan, bems, Poseidon

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Разделить [email protected];pass, разделить строку в login / pass 
V
    Опции темы
pomogite
  Дата 21.8.2011, 12:17 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


Профиль
Группа: Участник
Сообщений: 208
Регистрация: 24.3.2006

Репутация: нет
Всего: нет



Появилась нужда проверять почту с нескольких мыл, но немогу понять как разбить строку вида [email protected];pass чтобы login вносился в переменную и pass вносился в переменную, немогу разобраться с функцией pos, подскажите пожалуйста как это можно сделать? 
PM MAIL   Вверх
Frees
Дата 21.8.2011, 12:24 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Завсегдатай
Сообщений: 2233
Регистрация: 2.12.2005
Где: Екатеринбург

Репутация: 16
Всего: 54



суть такова
Код

s := '[email protected];pass';
login := copy(s, 1, pos('@', s));
pass := copy(s, pos(';', s))


отладишь и доведешь сам как нибудь.


--------------------
Кольцов Виктор Владимирович
PM MAIL ICQ   Вверх
pomogite
  Дата 21.8.2011, 12:45 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


Профиль
Группа: Участник
Сообщений: 208
Регистрация: 24.3.2006

Репутация: нет
Всего: нет



Frees, Спасибо большое. Только если пишу так 
Код

s := '[email protected];pass';
login := copy(s,0, pos('@', s)-1);
pass := copy(s,0,pos(';', s));

То на выходе получаю login - login(тут правильно) и pass - [email protected] как мне сделать чтобы после знака всё скопировать?

Это сообщение отредактировал(а) pomogite - 21.8.2011, 13:42
PM MAIL   Вверх
Poseidon
Дата 21.8.2011, 13:48 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Delphi developer
****


Профиль
Группа: Комодератор
Сообщений: 5273
Регистрация: 4.2.2005
Где: Гомель, Беларусь

Репутация: 9
Всего: 133



Если строка именно такого вида, ничего больше в ней нет, то можно регуляркой вытащить:
Код

(^[_a-zA-Z\d\-\.]+|[_a-zA-Z\d\-\.]+$)


Добавлено через 1 минуту и 37 секунд
А, да. В pass ведь могут быть русские буквы. Вот так тогда
Код

(^[_a-zA-Z\d\-\.]+|[_a-zA-Zа-яА-Я\d\-\.]+$)



--------------------
Если хочешь, что бы что-то работало - используй написанное, 
если хочешь что-то понять - пиши сам...
PM MAIL ICQ   Вверх
Frees
Дата 21.8.2011, 13:57 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Завсегдатай
Сообщений: 2233
Регистрация: 2.12.2005
Где: Екатеринбург

Репутация: 16
Всего: 54



Цитата(pomogite @  21.8.2011,  15:45 Найти цитируемый пост)
То на выходе получаю login - login(тут правильно) и pass - [email protected] как мне сделать чтобы после знака всё скопировать?

Код

pass := copy(s, pos(';', s)  +1);



--------------------
Кольцов Виктор Владимирович
PM MAIL ICQ   Вверх
pomogite
Дата 21.8.2011, 14:06 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


Профиль
Группа: Участник
Сообщений: 208
Регистрация: 24.3.2006

Репутация: нет
Всего: нет



Poseidon, Регуляркой это слишком уж для такой программы простой.


Frees, Так выдаёт ошибку Not enough actual parameters, а если написать 
Код

pass := copy(s,0,pos(';', s)+1);

То pass равен - [email protected];p , т.е только один символ от пароля и всё перед символом ;

PM MAIL   Вверх
superVad
Дата 21.8.2011, 14:20 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 735
Регистрация: 6.4.2006
Где: Черкассы, Украина

Репутация: 7
Всего: 15



pomogite, и чего все так этих регулярок боятся? Инструмент как раз для таких задач.
PM MAIL   Вверх
pomogite
Дата 21.8.2011, 14:24 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


Профиль
Группа: Участник
Сообщений: 208
Регистрация: 24.3.2006

Репутация: нет
Всего: нет



superVad, Компонент устанавливать нужно, в D7 нету своих функций с регулярками

Вот такая вот фигня получилась =)

Код

login := copy(s,0, pos('@', s)-1);
pass := copy(s,0,pos(';', s));
pass2:= copy(Edit1.Text,length(pass)+1,pos(';',Edit1.Text)-1);

Теперь в pass2 выводится нормальный пароль =) Всем спасибо за помощь!

Это сообщение отредактировал(а) pomogite - 21.8.2011, 14:34
PM MAIL   Вверх
Frees
Дата 21.8.2011, 15:08 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Завсегдатай
Сообщений: 2233
Регистрация: 2.12.2005
Где: Екатеринбург

Репутация: 16
Всего: 54



Цитата(superVad @  21.8.2011,  17:20 Найти цитируемый пост)
pomogite, и чего все так этих регулярок боятся? Инструмент как раз для таких задач.

потому что для регулярок нужно знать магические заклинания...
Цитата(Poseidon @  21.8.2011,  16:48 Найти цитируемый пост)
(^[_a-zA-Z\d\-\.]+|[_a-zA-Zа-яА-Я\d\-\.]+$)


а смысл в них разбираться? что бы переписать три(!) строчки кода?



--------------------
Кольцов Виктор Владимирович
PM MAIL ICQ   Вверх
superVad
Дата 21.8.2011, 15:14 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 735
Регистрация: 6.4.2006
Где: Черкассы, Украина

Репутация: 7
Всего: 15



Цитата(pomogite @  21.8.2011,  13:24 Найти цитируемый пост)
superVad, Компонент устанавливать нужно, в D7 нету своих функций с регулярками

Можно просто пас файл в проект добавить. Разные библиотеки есть.

Добавлено через 1 минуту и 7 секунд
Цитата(Frees @  21.8.2011,  14:08 Найти цитируемый пост)
а смысл в них разбираться? что бы переписать три(!) строчки кода?

В будущем пригодится. Да и вообще - развиваться надо.
Но если все упирается во время, то соглашусь.
PM MAIL   Вверх
Poseidon
Дата 21.8.2011, 18:51 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Delphi developer
****


Профиль
Группа: Комодератор
Сообщений: 5273
Регистрация: 4.2.2005
Где: Гомель, Беларусь

Репутация: 9
Всего: 133



Цитата(Frees @  21.8.2011,  15:08 Найти цитируемый пост)
а смысл в них разбираться? что бы переписать три(!) строчки кода?
Смысл в читаемости кода.

Код

RegExp.Expression:= '(^[_a-zA-Z\d\-\.]+|[_a-zA-Zа-яА-Я\d\-\.]+$)';
if RegExp.Exec(s) then login:= RegExp.Match[0];
if RegExp.ExecNext then pass:= RegExp.Match[0];
и все понятно. А в этих copy-pos с кучей параметров в которых эти же copy-pos, ногу сломаешь.



--------------------
Если хочешь, что бы что-то работало - используй написанное, 
если хочешь что-то понять - пиши сам...
PM MAIL ICQ   Вверх
Данкинг
Дата 21.8.2011, 19:13 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Yersinia pestis
****


Профиль
Группа: Завсегдатай
Сообщений: 8302
Регистрация: 7.11.2006
Где: მოსკოვი

Репутация: 11
Всего: 130



Цитата(Poseidon @  21.8.2011,  19:51 Найти цитируемый пост)
и все понятно.

Лично мне вот copy-pos понятно, поскольку с регулярками никогда не работал и вообще не в курсе, что с ними и как. А "выделить 5 символов начиная с 3-го" - тут уж наглядней некуда. smile 



--------------------
There's nothing left but silent epitaphs.
PM MAIL WWW   Вверх
Poseidon
Дата 21.8.2011, 22:24 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Delphi developer
****


Профиль
Группа: Комодератор
Сообщений: 5273
Регистрация: 4.2.2005
Где: Гомель, Беларусь

Репутация: 9
Всего: 133



Данкинг, да, поставленную задачу может и проще с copy решить. Но если эту задачу чуть расширить, допустим, в строке у нас может быть несколько e-mail с паролями после точки с запятой, и единственой зацепкой является "@", то вот тут copy-pos превратится в такую белиберду... 


--------------------
Если хочешь, что бы что-то работало - используй написанное, 
если хочешь что-то понять - пиши сам...
PM MAIL ICQ   Вверх
northener
Дата 21.8.2011, 23:23 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Завсегдатай
Сообщений: 1361
Регистрация: 2.9.2010

Репутация: 12
Всего: 20



Цитата(pomogite @  21.8.2011,  14:24 Найти цитируемый пост)
login := copy(s,0, pos('@', s)-1);
pass := copy(s,0,pos(';', s));

Теперь в pass2 выводится нормальный пароль =) Всем спасибо за помощь!


Я что-то пропустил? С каких это пор второй параметр функции Copy может быть равен 0?


--------------------
Но только лошади летают вдохновенно.
Иначе лошади разбились бы мгновенно!
PM MAIL   Вверх
bems
Дата 23.8.2011, 07:13 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Комодератор
Сообщений: 3400
Регистрация: 5.1.2006

Репутация: 18
Всего: 88



Модератор: Оффтоп удалён. Давайте вернёмся к теме обсуждения.


--------------------
Обижено школьников: 8
PM MAIL   Вверх
Ответ в темуСоздание новой темы Создание опроса
Правила форума "Delphi: Для новичков"
SnowyMetalFan
bemsPoseidon
Rrader

Запрещается!

1. Публиковать ссылки на вскрытые компоненты

2. Обсуждать взлом компонентов и делиться вскрытыми компонентами

  • Литературу по Дельфи обсуждаем здесь
  • Действия модераторов можно обсудить здесь
  • С просьбами о написании курсовой, реферата и т.п. обращаться сюда
  • Вопросы по реализации алгоритмов рассматриваются здесь
  • 90% ответов на свои вопросы можно найти в DRKB (Delphi Russian Knowledge Base) - крупнейшем в рунете сборнике материалов по Дельфи


Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, Snowy, MetalFan, bems, Poseidon, Rrader.

 
1 Пользователей читают эту тему (1 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | Delphi: Для новичков | Следующая тема »


 




[ Время генерации скрипта: 0.1097 ]   [ Использовано запросов: 21 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.