Справочник функций

Ваш аккаунт

Войти через: 
Забыли пароль?
Регистрация
Информацию о новых материалах можно получать и без регистрации:

Почтовая рассылка

Подписчиков: -1
Последний выпуск: 19.06.2015

int -> TColor

92
03 июля 2007 года
Тень Пса
2.2K / / 19.10.2006
столкнулся с проблемой, которую ну никак не могу решить =) вроде кажется - мелочь.. а мозги мне имеет уже 3 часа :)))

есть Java программа, она кушает из текста inline-команду %&FGColor-65536&% и делает текст красным.... %&BGColor-6302560&% а это вообще какой-то болотный светлый фон.....

дык вот как мне вот этот int преобразовать в родной для Builder'а TColor? пытался просто StringToColor(), так как всё как строка читается, но получается АБСОЛЮТНО другой цвет, что само собой разумеется... :( очень нужно....
4.3K
03 июля 2007 года
flat
142 / / 27.12.2005
в билдере код цвета представляется в таком формате: 0x00BBGGRR
BB - blue
GG - green
RR - red

---
еще можно использовать макрос RGB(R, G, B)
1.6K
03 июля 2007 года
Grom2025
82 / / 20.03.2003
в Яве и в HTML система цветов определена как RGB в Си наоборот
BGR

те. если в HTML красный: #FF0000 (16711680);
то в Си: 0x000000FF (255);

те для решения грабли в лоб:
1 перевести число (даваемое) в HEX;
2 символы перекидать в стороку по 2
(те FF0000->000000FF)
3 преобразовать строчку с хексом в число...

гм... можно подумать над хитрой логической трансформацией числа но это не ко мне... если кто умеет откликнитесь!
92
03 июля 2007 года
Тень Пса
2.2K / / 19.10.2006
точно... в хекс... блин... :) спасибо!

но разве 65536 это красный? :) а прога написанная на Жава берёт как красный.. :(
1.6K
03 июля 2007 года
Grom2025
82 / / 20.03.2003
Как пример реализации(ногами не бейте):
Код:
// вспомогательная функция для HexToInt
int __fastcall HexSym(String HexValue)
{
  int ret=0;
  if(HexValue.UpperCase()=="F")ret=15;
  if(HexValue.UpperCase()=="E")ret=14;
  if(HexValue.UpperCase()=="D")ret=13;
  if(HexValue.UpperCase()=="C")ret=12;
  if(HexValue.UpperCase()=="B")ret=11;
  if(HexValue.UpperCase()=="A")ret=10;
  if(HexValue.UpperCase()=="9")ret=9;
  if(HexValue.UpperCase()=="8")ret=8;
  if(HexValue.UpperCase()=="7")ret=7;
  if(HexValue.UpperCase()=="6")ret=6;
  if(HexValue.UpperCase()=="5")ret=5;
  if(HexValue.UpperCase()=="4")ret=4;
  if(HexValue.UpperCase()=="3")ret=3;
  if(HexValue.UpperCase()=="2")ret=2;
  if(HexValue.UpperCase()=="1")ret=1;
  return ret;
}

// конвертирует хексовую строку в значение ИНТ
unsigned int __fastcall HexToInt(String HexValue)
{

  unsigned int ret1=0;

  for (int i=1;i<HexValue.Length()+1;i++)
    {
      ret1 += HexSym(HexValue.SubString(i,1));
      if(i<HexValue.Length())ret1*=16;
    }
  return ret1;

}


Теперь сам код:

Код:
#include "idglobal.hpp"


String to_convert = IntToHex(StrToInt(Edit1->Text),6);

  String converted = "";

  for(int i=8;i>0;i--)
  {
    converted+=to_convert.SubString(i-1,1);
    converted+=to_convert.SubString(i,1);
    i--;
  }

  unsigned int color = HexToInt(converted);
1.6K
03 июля 2007 года
Grom2025
82 / / 20.03.2003
Цитата: Тень Пса
точно... в хекс... блин... :) спасибо!

но разве 65536 это красный? :) а прога написанная на Жава берёт как красный.. :(



гм... и правда темный больно... но красный (в HEX 0x100000), EF не хватает, мож умножить?

Реклама на сайте | Обмен ссылками | Ссылки | Экспорт (RSS) | Контакты
Добавить статью | Добавить исходник | Добавить хостинг-провайдера | Добавить сайт в каталог