Маска формата для отображения в HEX

Clarion, Clarion 7

Модератор: Дед Пахом

Правила форума
При написании вопроса или обсуждении проблемы, не забывайте указывать версию Clarion который Вы используете.
А так же пользуйтесь спец. тегами при вставке исходников!!!
Аватара пользователя
Игорь Столяров
Ветеран движения
Сообщения: 3515
Зарегистрирован: 07 Июль 2005, 9:19
Откуда: г. Ростов-на-Дону

Маска формата для отображения в HEX

Сообщение Игорь Столяров » 06 Июль 2018, 12:59

Привет всем !

Подскажите пожалуйста, а можно ли как-то отобразить десятичное число в 16-ом формате ?
Задача в общем-то простая. Вводим цвет из палитры и просто хочется показать его понятном HEX виде,
без преобразований (не нужно оно):

Код: Выделить всё

Loc:BalloonColor Long(Color:None)

  Code

  If ColorDialog('Винни, а какого он был цвета ?',Loc:BalloonColor)
     Message('Ну вот. Мой любимый цвет: ' & Format(Loc:BalloonColor,МАСКА_ДЛЯ_ОТОБРАЖЕНИЯ_В_HEX))
  end   
Заранее спасибо ! :)
«V» значит Вендетта !

Yufil
Ветеран движения
Сообщения: 1008
Зарегистрирован: 16 Май 2006, 13:34
Контактная информация:

Маска формата для отображения в HEX

Сообщение Yufil » 06 Июль 2018, 13:57

Недели две назад искал. Нифига. Там ещё для цвета надо переставить байты, просто так не канает

Код: Выделить всё

HexColor  Cstring(10) 
HexLen    Long 
               Code 
               HexColor = LongToHex(  MyColor, False ) 
               HexLen = LEN( Clip(HexColor)) 
               HexColor = '#' & HexColor[ HexLen-1 : HexLen ] & HexColor[ HexLen-3 : HexLen-2 ] & HexColor[ HexLen-5 : HexLen-4 ]
               Return HexColor 

kreator
Ветеран
Сообщения: 2866
Зарегистрирован: 28 Май 2009, 14:54
Откуда: Москва

Маска формата для отображения в HEX

Сообщение kreator » 06 Июль 2018, 20:25

Такой вариант:

Код: Выделить всё

LOC:HexColor = '#' & ByteToHex(Loc:BalloonColor%256, False) &  ByteToHex((LOC:BalloonColor%65536-LOC:BalloonColor%256)/256, False) & ByteToHex((LOC:BalloonColor-LOC:BalloonColor%256-(LOC:BalloonColor%65536-LOC:BalloonColor%256)*256)/65536, False)
Если в количестве скобок не ошибся.
We are hard at work… for you. :)

gopstop2007
Ветеран
Сообщения: 1074
Зарегистрирован: 25 Март 2009, 21:55

Маска формата для отображения в HEX

Сообщение gopstop2007 » 06 Июль 2018, 21:19

_itoa(numer, buf, 16) :)
С уважением РА - Быть сильным не означает "никогда не падать". Быть сильным означает "ВСЕГДА СНОВА ПОДНИМАТЬСЯ!"

Аватара пользователя
RaFaeL
Ветеран
Сообщения: 711
Зарегистрирован: 24 Март 2009, 17:59
Откуда: НН
Контактная информация:

Маска формата для отображения в HEX

Сообщение RaFaeL » 06 Июль 2018, 23:54

Функция RGBColor из libxlsxwriter не то что нужно делает?

Аватара пользователя
Игорь Столяров
Ветеран движения
Сообщения: 3515
Зарегистрирован: 07 Июль 2005, 9:19
Откуда: г. Ростов-на-Дону

Маска формата для отображения в HEX

Сообщение Игорь Столяров » 07 Июль 2018, 8:20

RaFaeL писал(а):
06 Июль 2018, 23:54
Функция RGBColor из libxlsxwriter не то что нужно делает?
Спасибо. Именно то, и давно используется для отображения номера цвета в HEX. Но есть один момент.
Все указанные способы - это конвертация с использованием функций (встроенных или WinAPI).
A хотелось бы просто отображать номер цвета в поле, вводить, редактировать в HEX … но как я понял, так низя.

Цвет в Clarion - это обычное десятичное число, и в этом есть некий опус, противоречащий общепринятым представлениям.
Так же как указание разрешения картинки в пикселях на метр (FreeImage) или диаметра водопроводной трубы в сантиметрах ... ;)
«V» значит Вендетта !

Yufil
Ветеран движения
Сообщения: 1008
Зарегистрирован: 16 Май 2006, 13:34
Контактная информация:

Маска формата для отображения в HEX

Сообщение Yufil » 07 Июль 2018, 10:45

A хотелось бы просто отображать номер цвета в поле, вводить, редактировать в HEX … но как я понял, так низя.
Можно по идее - три спинбокса или комбобокса с выбором из очереди ( от 00 до ff). Уже который год собираюсь реализовать :D. Сейчас просто прописывается кларионовский код цвета или можно выбрать кнопкой из ColorDialog, научил дизайнеров - они на листочек записывают коды нужных цветов и потом вставляют. А в ColorDialog есть явная установка цвета по кодам RGB, всех устраивает.

А Hex цвет сделал, чтобы могли посмотреть, как оно в HTML будет выглядеть ...

Аватара пользователя
Игорь Столяров
Ветеран движения
Сообщения: 3515
Зарегистрирован: 07 Июль 2005, 9:19
Откуда: г. Ростов-на-Дону

Маска формата для отображения в HEX

Сообщение Игорь Столяров » 07 Июль 2018, 11:15

Вот тоже и оно - приходится как-то изворачиваться. Хотя живой пример - рядом.
Те же дата или время - тоже некая цифра, но форматы @D и @T позволяют работать с этим цифровым
значением в общепринятом формате без каких либо проблем. Почему тоже не сделано с цветом - непонятно.
«V» значит Вендетта !

kreator
Ветеран
Сообщения: 2866
Зарегистрирован: 28 Май 2009, 14:54
Откуда: Москва

Маска формата для отображения в HEX

Сообщение kreator » 07 Июль 2018, 11:24

Игорь Столяров писал(а):
07 Июль 2018, 11:15
Вот тоже и оно - приходится как-то изворачиваться. Хотя живой пример - рядом.
Те же дата или время - тоже некая цифра, но форматы @D и @T позволяют работать с этим цифровым
значением в общепринятом формате без каких либо проблем. Почему тоже не сделано с цветом - непонятно.
Ну не совсем тоже самое. Цвет в формате HEX кому нужен? Верстальщикам веб-страниц? для обычного пользователя не особо нужен.
We are hard at work… for you. :)

Аватара пользователя
Дед Пахом
Старичок
Сообщения: 2039
Зарегистрирован: 07 Июль 2005, 15:51
Откуда: Москва, Россия

Маска формата для отображения в HEX

Сообщение Дед Пахом » 07 Июль 2018, 11:41

Года 3 назад Брюс Джонсон (Capesoft) собирал предложения о форматах, которых не хватает (речь шла именно о picture tokens, типа @H для hex). Насобирал штук 40 и отправил в Problem Tracker. Где всё и умерло.
С уважением, ДП

Аватара пользователя
Игорь Столяров
Ветеран движения
Сообщения: 3515
Зарегистрирован: 07 Июль 2005, 9:19
Откуда: г. Ростов-на-Дону

Маска формата для отображения в HEX

Сообщение Игорь Столяров » 07 Июль 2018, 11:52

kreator писал(а):
07 Июль 2018, 11:24
Ну не совсем тоже самое.
Можно посмотреть на ситуацию немного с другой стороны. Цвет или дата - воспринимается в полне определённом виде.
В различных системах программирования или СУБД ТЕХНОЛОГИЧЕСКИ цвет или дата реализуется по разному. И нет проблем.
С точки зрения пользователя дата 07.07.2018 или цвет FFDDAA, а как оно внутри реализовано в Clarion или Microsoft.SQL - все равно.
Должен быть простой, доступный и понятный механизм работы с типом данных. В Clarion для даты это есть, для цвета - нет.
«V» значит Вендетта !

Аватара пользователя
Игорь Столяров
Ветеран движения
Сообщения: 3515
Зарегистрирован: 07 Июль 2005, 9:19
Откуда: г. Ростов-на-Дону

Маска формата для отображения в HEX

Сообщение Игорь Столяров » 07 Июль 2018, 11:54

Дед Пахом писал(а):
07 Июль 2018, 11:41
речь шла именно о picture tokens, типа @H для hex
Радует, что я не сельский сумасшедший, которому в голову пришли столь очевидные вещи … ;)
«V» значит Вендетта !

Аватара пользователя
vic7tar
Активист
Сообщения: 103
Зарегистрирован: 09 Февраль 2017, 20:12

Маска формата для отображения в HEX

Сообщение vic7tar » 07 Июль 2018, 14:35

А про cwutil.inc подзабыли, там хексы всякие и колоры.
C10, Win10x64

kreator
Ветеран
Сообщения: 2866
Зарегистрирован: 28 Май 2009, 14:54
Откуда: Москва

Маска формата для отображения в HEX

Сообщение kreator » 22 Август 2018, 12:14

Дед Пахом писал(а):
07 Июль 2018, 11:41
Года 3 назад Брюс Джонсон (Capesoft) собирал предложения о форматах, которых не хватает (речь шла именно о picture tokens, типа @H для hex). Насобирал штук 40 и отправил в Problem Tracker. Где всё и умерло.
А нет у нас формата (типа обрезанного @d4) или ещё чего-нибудь простого для вывода названия месяца? Choose как-то громоздко.
We are hard at work… for you. :)

Аватара пользователя
Игорь Столяров
Ветеран движения
Сообщения: 3515
Зарегистрирован: 07 Июль 2005, 9:19
Откуда: г. Ростов-на-Дону

Маска формата для отображения в HEX

Сообщение Игорь Столяров » 22 Август 2018, 12:35

kreator писал(а):
22 Август 2018, 12:14
простого для вывода названия месяца
На вскидку ! ;)

Код: Выделить всё

  Message(      Sub(Format(Today(),@d4),1,InString(' ',Format(Today(),@d4))-1)       )
«V» значит Вендетта !

Ответить