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

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

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

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 20.10.2013, 08:32   #1
Train-GT
Пользователь
 
Регистрация: 22.11.2012
Сообщений: 26
По умолчанию Работа со строками

У меня вопрос: в label записан текст: 12,21 АБ . Как оставить от текста только две последние буквы АБ? Функция delete (str,1,6) не работает.
Train-GT вне форума Ответить с цитированием
Старый 20.10.2013, 08:49   #2
Кольша
Далеко не
Участник клуба
 
Аватар для Кольша
 
Регистрация: 11.08.2011
Сообщений: 1,512
По умолчанию

copy, pos, delete;
Код:
showmessage(copy(label1.caption,length(label1.caption)-2,length(label1.caption)));
Кольша вне форума Ответить с цитированием
Старый 20.10.2013, 09:05   #3
Serge_Bliznykov
Старожил
 
Регистрация: 09.01.2008
Сообщений: 26,229
По умолчанию

Цитата:
Код:
showmessage(copy(label1.caption,length(label1.caption)-2,length(label1.caption)));
ну, я бы сказал, что
Код:
label1.caption := copy(label1.caption,length(label1.caption)-1,2);
но ход мысли правильный
Serge_Bliznykov вне форума Ответить с цитированием
Старый 20.10.2013, 09:13   #4
Poma][a
Новичок
Джуниор
 
Регистрация: 11.10.2011
Сообщений: 3,882
По умолчанию

Эм..А почему бы не сделать так :
Код:
label.caption := 'АБ';
?
Poma][a вне форума Ответить с цитированием
Старый 20.10.2013, 09:50   #5
Serge_Bliznykov
Старожил
 
Регистрация: 09.01.2008
Сообщений: 26,229
По умолчанию

Цитата:
Сообщение от Poma][a Посмотреть сообщение
Эм..А почему бы не сделать так :
Код:
label.caption := 'АБ';
?
Ну, мы же предполагаем, что текст в Label может быть разный. И последние две буквы совсем не обязательно равны АБ
Serge_Bliznykov вне форума Ответить с цитированием
Старый 20.10.2013, 10:12   #6
cotseec
Пользователь
 
Регистрация: 02.05.2012
Сообщений: 45
По умолчанию

Цитата:
Как оставить от текста только две последние буквы
Код:
showmessage(label1.caption[length(label1.caption)-1] + 
      label1.caption[length(label1.caption)]);
Цитата:
ну, я бы сказал, что
Код:
label1.caption := copy(label1.caption,length(label1.caption)-1,2);
в случае использования copy, delete, т.е. функций, где указывается число вырезаемых символов вырезается указанное число символов или до конца строки, если указанное число превышает оставшееся число символов, т.к. тут речь идет о вырезании в конце строки, то код тов. Кольша корректен, можно вместо length(label1.caption) (число вырезаемых символов) указать $FFF, результат будет тот же
Skype: cotseec
ICQ: 330-171-495
cotseec вне форума Ответить с цитированием
Старый 20.10.2013, 10:22   #7
Serge_Bliznykov
Старожил
 
Регистрация: 09.01.2008
Сообщений: 26,229
По умолчанию

хотел промолчать, но, когда вижу бажный код - не могу это сделать, уж извините..

Цитата:
Сообщение от cotseec
Код:
showmessage(label1.caption[length(label1.caption)-1] + 
      label1.caption[length(label1.caption)]);
Категорически нельзя писать(использовать) подобный код!
Как Вы думаете, если Label1 будет пустой, то что сделает Ваш код?!

Цитата:
где указывается число вырезаемых символов вырезается указанное число символов или до конца строки, если указанное число превышает оставшееся число символов, т.к. тут речь идет о вырезании в конце строки, то код тов. Кольша корректен, можно вместо length(label1.caption) (число вырезаемых символов) указать $FFF, результат будет тот же
во-первых, внимательнее посмотрите, от кого символа в процедуре Copy берётся подстрока в коде Кольшы и от какого - в моём примере.
а во-вторых, да. ошибки не будет. Но объясните, зачем вместо конкретной константы 2 (нам же нужны ДВА символа из строки) писать $FFF или вызывать какую-то функцию?! Да, Вы можете написать даже так Copy(s, length(s)-1, $FFF+$FFF+Length(s)+2) - но ЗАЧЕМ?!! Это и называется индусский код
Serge_Bliznykov вне форума Ответить с цитированием
Старый 20.10.2013, 10:47   #8
cotseec
Пользователь
 
Регистрация: 02.05.2012
Сообщений: 45
По умолчанию

Цитата:
Как Вы думаете, если Label1 будет пустой, то что сделает Ваш код?!
да, вывалится ошибка, да, необходимо проверять на наличие данных, длина которых не меньше 2, но перед работой с какими-то данными, получаемыми откуда-то, имеет смысл в первую очередь проверить наличие этих данных и соответствия их некоторым необходимым признакам, не правда ли?

Цитата:
Да, Вы можете написать даже так Copy(s, length(s)-1, $FFF+$FFF+Length(s)+2) - но ЗАЧЕМ?!!
затем, что когда число символов до конца строки неизвестно проще поставить заведомо большее значение, чем каждый раз высчитывать, в данном случае все известно, это лишнее

$FFF+$FFF+Length(s)+2 - а почему бы не ввернуть расчет еще по какой-нибудь замысловатой формуле? не изголяйтесь....

по поводу символа, с которого начинается отсчет - да, не увидел
Skype: cotseec
ICQ: 330-171-495
cotseec вне форума Ответить с цитированием
Старый 20.10.2013, 12:08   #9
Arigato
Высокая репутация
СуперМодератор
 
Аватар для Arigato
 
Регистрация: 27.07.2008
Сообщений: 15,865
По умолчанию

Цитата:
Сообщение от Train-GT Посмотреть сообщение
Функция delete (str,1,6) не работает.
Прекрасно работает, только она не функция, а процедура.
Arigato вне форума Ответить с цитированием
Старый 20.10.2013, 13:34   #10
grominfo
Форумчанин
 
Аватар для grominfo
 
Регистрация: 30.05.2011
Сообщений: 651
По умолчанию

Самый правильный код у Serge_Bliznykov

Код:
label1.caption := copy(label1.caption,length(label1.caption)-1,2);
Создание, программирование и сопровождение сайтов любой сложности.
Изготовление программ на заказ.
Список услуг и портфолио на сайте www.andreygrom.ru
grominfo вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Работа со строками AlexQQ Помощь студентам 0 12.05.2013 22:04
Работа со строками (C++) Nomicos Помощь студентам 3 11.07.2012 15:26
Работа со строками mary111le Помощь студентам 1 25.11.2011 07:12
Работа с матрицами (норма матрицы, работа со строками) Neitrosha Помощь студентам 1 26.11.2010 20:19
Работа со строками. tae1980 Microsoft Office Excel 2 18.04.2009 16:38