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

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

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

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 22.09.2014, 09:37   #1
Михаил Юрьевич
Форумчанин
 
Аватар для Михаил Юрьевич
 
Регистрация: 25.12.2007
Сообщений: 655
По умолчанию Амперсанды

Для того что бы вывести в caption такую запись "0&H5E5EF2&" прописываю соответственно два амперсанда , вот так "0&&H5E5EF2&&" , но когда копирую в буфер обмена из caption ,
то копируется так же два амперсанда "0&&H5E5EF2&&" . Как копировать по одному "0&H5E5EF2&" ?
За частые поиски был забанен во всех известных
поисковых системах!
Михаил Юрьевич вне форума Ответить с цитированием
Старый 22.09.2014, 09:50   #2
Аватар
Старожил
 
Аватар для Аватар
 
Регистрация: 17.11.2010
Сообщений: 18,922
По умолчанию

Заменить каждые два на один
Если бы архитекторы строили здания так, как программисты пишут программы, то первый залетевший дятел разрушил бы цивилизацию
Аватар вне форума Ответить с цитированием
Старый 22.09.2014, 11:35   #3
Михаил Юрьевич
Форумчанин
 
Аватар для Михаил Юрьевич
 
Регистрация: 25.12.2007
Сообщений: 655
По умолчанию

Спасибо! Так и сделал, это наверно самый простой способ
За частые поиски был забанен во всех известных
поисковых системах!
Михаил Юрьевич вне форума Ответить с цитированием
Старый 22.09.2014, 13:49   #4
Михаил Юрьевич
Форумчанин
 
Аватар для Михаил Юрьевич
 
Регистрация: 25.12.2007
Сообщений: 655
По умолчанию

Вот только не понятно почему так?
Код:
s:=HOM.sSpeedButton7.Caption;
ShowMessage(s);
//копируем в буфер
Clipboard.Clear;
Clipboard.AsText:=s;
В ShowMessage код такой "0&H3DDAFC&" , значит он и в переменной передается в буфер такой, но если потом из буфера вставить например в edit или memo то он становиться таким "0&&H3DDAFC&&"
За частые поиски был забанен во всех известных
поисковых системах!
Михаил Юрьевич вне форума Ответить с цитированием
Старый 22.09.2014, 14:14   #5
Utkin
Старожил
 
Аватар для Utkin
 
Регистрация: 04.02.2009
Сообщений: 17,351
По умолчанию

Очевидно в буфере он имеет сакральный смысл и потому дублируется. Возможно буфер обмена боится что там не просто текст, а текст-юникод.
Маньяк-самоучка
Utkin появился в результате деления на нуль.
Осторожно! Альтернативная логика
Utkin вне форума Ответить с цитированием
Старый 22.09.2014, 15:59   #6
Михаил Юрьевич
Форумчанин
 
Аватар для Михаил Юрьевич
 
Регистрация: 25.12.2007
Сообщений: 655
По умолчанию

Вот если не через переменную , а вот так,
Clipboard.AsText:='0&H3DDAFC&';
То отображается нормально
Может есть какие мысли? А то замена как то не то.
За частые поиски был забанен во всех известных
поисковых системах!
Михаил Юрьевич вне форума Ответить с цитированием
Старый 22.09.2014, 16:26   #7
Аватар
Старожил
 
Аватар для Аватар
 
Регистрация: 17.11.2010
Сообщений: 18,922
По умолчанию

Цитата:
Вот если не через переменную , а вот так
Не правда. Значит в переменной тоже сдвоенные. А ShowMessage каждую сдвоенную отображает как одну. Замену делай так
Код:
s:=StringReplace(HOM.sSpeedButton7.Caption,'&&','&',[rfReplaceAll]);
Если бы архитекторы строили здания так, как программисты пишут программы, то первый залетевший дятел разрушил бы цивилизацию

Последний раз редактировалось Аватар; 22.09.2014 в 16:29.
Аватар вне форума Ответить с цитированием
Старый 22.09.2014, 18:54   #8
Михаил Юрьевич
Форумчанин
 
Аватар для Михаил Юрьевич
 
Регистрация: 25.12.2007
Сообщений: 655
По умолчанию

Разобрался, такую хрень выдает sSpeedButton5.Caption, если через edit.text то все нормально
За частые поиски был забанен во всех известных
поисковых системах!
Михаил Юрьевич вне форума Ответить с цитированием
Старый 23.09.2014, 01:51   #9
northener
ПШП
Участник клуба
 
Регистрация: 15.07.2013
Сообщений: 1,872
По умолчанию

Цитата:
Сообщение от Михаил Юрьевич Посмотреть сообщение
Разобрался, такую хрень выдает sSpeedButton5.Caption, если через edit.text то все нормально
И не только sSpeedButton5.Caption, но и многие другие классы, которые должны уметь "показывать горячую клавишу" буде такая задумана для них. В этом случае в памяти хранятся два амперсанда, но показывается только один. (А в буфер обмена попадает именно содержимое памяти). Если же в тексте/заголовке записан один амперсанд, он вообще собственно не показывается. Но следующий за ним символ некоторым образом внешне выделяется по сравнению со всеми прочими символами.

Вспомни об этом, когда/если будешь анализировать заголовки пунктов меню созданного в рантайме.

Ну и ещё. Злой я сегодня.
Цитата:
Для того что бы вывести в caption такую запись "0&H5E5EF2&" прописываю соответственно два амперсанда
Чему соответственно? Похоже вы считаете что злой дядя Борланд (обычно я говорю папаша Борланд, но к вам это явно не относится) с бодуна приказал прописывать именно два амперсанда (две одинарные кавычки) подряд. И неужели ни разу не щёлкнуло в мозгу - "А почему так? Почему все символы можно "прописывать один раз, а вот эти обязательно два раза".

Последний раз редактировалось northener; 23.09.2014 в 02:04.
northener вне форума Ответить с цитированием
Ответ


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