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

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

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

Восстановить пароль

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

Ответ
 
Опции темы Поиск в этой теме
Старый 18.06.2011, 13:03   #1
celovec
Форумчанин
 
Регистрация: 15.06.2007
Сообщений: 182
По умолчанию Все что после пробела заносим в переменную.

Подскажите пожалуйста, как быть с такой задачей:
Необходимо в edit1.text отслеживать имя "Андрей",
Тоесть если текст начинается с слова Андрей, и после него есть пробел и какие-то, символы необходимо показать допустим в label1.caption

Пример:
"Андрей 23 22"
В данном случае показываем в label1: "23 22":

Пробовал работать с Pos, но как-то не получилось.
celovec вне форума Ответить с цитированием
Старый 18.06.2011, 14:12   #2
Whited
Пользователь
 
Регистрация: 20.02.2011
Сообщений: 21
По умолчанию

Код:
if Pos('Андрей ',edit1.text)>0 then
label1.caption:=Copy(edit1.text,Pos('Андрей',edit1.text)+1,Length(edit1.text));

Последний раз редактировалось Stilet; 18.06.2011 в 14:33.
Whited вне форума Ответить с цитированием
Старый 18.06.2011, 14:36   #3
Leo08
Delphi master
Пользователь
 
Аватар для Leo08
 
Регистрация: 28.05.2011
Сообщений: 96
По умолчанию

Код:
Procedure doit(var s:string);
Var
S:string;
Begin
if Pos(' ',s)<>0 then 
Delete(s,1,pos(' ',s));
End;
БЯЯЯГГАААААА
Leo08 вне форума Ответить с цитированием
Старый 18.06.2011, 14:49   #4
artemavd
Старожил
 
Аватар для artemavd
 
Регистрация: 05.06.2008
Сообщений: 4,210
По умолчанию

Leo08, и что твой код делает? ТС по-моему надо было копировать после слова, а у тебя идет удаление.
Не стоит смеяться над человеком делающим шаг назад, возможно он делает разбег.
artemavd вне форума Ответить с цитированием
Старый 18.06.2011, 15:06   #5
Mad_Cat
Made In USSR!
Старожил
 
Аватар для Mad_Cat
 
Регистрация: 01.09.2010
Сообщений: 3,657
По умолчанию

Цитата:
Leo08, и что твой код делает?
он как раз из
Код:
s='Андрей 23 22'
делает
Код:
s='23 22'
"...В жизни я встречал друзей и врагов.В жизни много всего перевидал.Солнце тело мое жгло, ветер волосы трепал,но я смысла жизни так и не узнал..."
(c) Юрий Клинских aka "Хой"
Mad_Cat вне форума Ответить с цитированием
Старый 18.06.2011, 16:59   #6
celovec
Форумчанин
 
Регистрация: 15.06.2007
Сообщений: 182
По умолчанию

Думал справлюсь сам, но как-то мне не нравится этот мой код:
Полностью задача выглядит так. Есть 2 имени за которыми нужно следить Андрей и Вася. Если После пробела цифра больше 30 или меньше 1, или там какой-то текст то в label1.caption вписывается 10.

Вот мой пример:
Код:
if (Pos('Андрей ',edit1.text) >0) or (Pos('Вася ',edit1.text) >0) then begin
  label1.caption:=Copy(edit1.text,Pos('Андей',edit1.text)+1,Length(edit1.text));
  label1.caption:=Copy(edit1.text,Pos('Вася',edit1.text)+1,Length(edit1.text));
  if (inttostr(label1.Caption) > inttostr('30')) or (inttostr(label1.Caption) < inttostr('1')) then label1.Caption:='10';
end;
Попрвьте пожалуйста меня.

Последний раз редактировалось celovec; 18.06.2011 в 17:02.
celovec вне форума Ответить с цитированием
Старый 18.06.2011, 17:17   #7
artemavd
Старожил
 
Аватар для artemavd
 
Регистрация: 05.06.2008
Сообщений: 4,210
По умолчанию

Есть такие три замечательные функции, с их помощью можно легко вытаскивать из любого текста какие угодно значения.
Вот, держи:

Код:
//берет из текста участок текста, который заключен между первым словом (OpenTag) и любым другим (CloseTag). Работает блестяще.
function GetText1(OpenTag,aText,CloseTag:string):string;
begin
Result:=Copy(aText,AnsiPos(OpenTag,aText)+Length(OpenTag),AnsiPos(CloseTag,aText)-Length(CloseTag)-1);
end;
Код:
//берет весь текст до любого указанного символа (слова)
function GetBefore(substr, str:string):string;
begin
if pos(substr,str)>0 then
  result:=copy(str,1,pos(substr,str)-1)
else
  result:='';
end;
Код:
//берет весь текст после любого указанного символа (слова)
function GetAfter(substr, str:string):string;
begin
if pos(substr,str)>0 then
  result:=copy(str,pos(substr,str)+length(substr),length(str))
else
  result:='';
end;
Не стоит смеяться над человеком делающим шаг назад, возможно он делает разбег.
artemavd вне форума Ответить с цитированием
Старый 18.06.2011, 20:23   #8
celovec
Форумчанин
 
Регистрация: 15.06.2007
Сообщений: 182
По умолчанию

Интересное решение. Спасибо, пригодится.
Но все таки хочется добить свой пример. Его можно как-то довести до ума?

Есть 2 имени за которыми нужно следить Андрей и Вася. Если После пробела цифра больше 30 или меньше 1, или там какой-то текст то в label1.caption вписывается 10.


Код:
if (Pos('Андрей ',edit1.text) >0) or (Pos('Вася ',edit1.text) >0) then begin
  label1.caption:=Copy(edit1.text,Pos('Андей',edit1.text)+1,Length(edit1.text));
  label1.caption:=Copy(edit1.text,Pos('Вася',edit1.text)+1,Length(edit1.text));
  if (inttostr(label1.Caption) > inttostr('30')) or (inttostr(label1.Caption) < inttostr('1')) then label1.Caption:='10';
end;
celovec вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Все что после переменной не важно celovec Общие вопросы Delphi 4 24.05.2011 22:40
Спарсить строку (скопировать до и после пробела данные) sxcine Помощь студентам 3 10.11.2010 19:22
Как все edit собрать в переменную и записать в файл f1xed Помощь студентам 9 07.02.2010 23:18
слово, слудующее после пробела peq Microsoft Office Excel 2 26.11.2009 18:46
Переход на новую строку после пробела nolz Общие вопросы Delphi 7 31.08.2009 19:33