// вспомогательная функция для 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;
}
int -> TColor
есть Java программа, она кушает из текста inline-команду %&FGColor-65536&% и делает текст красным.... %&BGColor-6302560&% а это вообще какой-то болотный светлый фон.....
дык вот как мне вот этот int преобразовать в родной для Builder'а TColor? пытался просто StringToColor(), так как всё как строка читается, но получается АБСОЛЮТНО другой цвет, что само собой разумеется... :( очень нужно....
BB - blue
GG - green
RR - red
---
еще можно использовать макрос RGB(R, G, B)
BGR
те. если в HTML красный: #FF0000 (16711680);
то в Си: 0x000000FF (255);
те для решения грабли в лоб:
1 перевести число (даваемое) в HEX;
2 символы перекидать в стороку по 2
(те FF0000->000000FF)
3 преобразовать строчку с хексом в число...
гм... можно подумать над хитрой логической трансформацией числа но это не ко мне... если кто умеет откликнитесь!
но разве 65536 это красный? :) а прога написанная на Жава берёт как красный.. :(
Код:
Теперь сам код:
Код:
#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);
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);
Цитата: Тень Пса
точно... в хекс... блин... :) спасибо!
но разве 65536 это красный? :) а прога написанная на Жава берёт как красный.. :(
но разве 65536 это красный? :) а прога написанная на Жава берёт как красный.. :(
гм... и правда темный больно... но красный (в HEX 0x100000), EF не хватает, мож умножить?