Вниз
Скачать: CL | DM;

HexToInt   Найти похожие ветки 

 
Board   (2002-06-27 20:30) [0]

Нужно такое проделать, но Дельфи ругается. Может подскажите?


 
rhf ©   (2002-06-27 20:38) [1]

а в чем проблема?


 
pusrg ©   (2002-06-27 20:40) [2]

Hex, это тоже число, но шестнадцатиричное.

Ф-ция IntToHex возвращает представление числа ввиде "шестнадцатиричной" строки и только.
Для обратного преобразования нужно перед этой строкой ставить знак $ и использовать ф-цию StrToInt, тоесть:

MyInt:=StrToInt(Format("$%s",[MyStr]));


P.S. Кстати этот вопрос недели полторы назад на форуме уже был.


 
Board   (2002-06-27 20:40) [3]

Просто число 00FFCC нужно перевести в Integer. Т.е. HexToInt(...)


 
McSimm ©   (2002-06-27 20:43) [4]

I := StrToInt("$00ffcc");
обрати внимание - не # а $
:)


 
McSimm ©   (2002-06-27 20:45) [5]

смешно :),
когда я писал ответ я еще не видел >Board (27.06.02 20:40)


 
Board   (2002-06-27 21:06) [6]

OK. Вот скажите, у меня программа раньше брала из файла номера цветов в 16-ричном виде и преобразовывала по способу, подсказанному вами выше. НО теперь проблема. Ясно, что 16-ричный формат такой $00FFCC, но чёрный цвет там $FFFFFFFF. Т.е. на 2 символа больше. Как мне теперь исправить этот код:

var
I, J: Integer;
begin
For I := 1 to image2.height do
For J := 1 to Image2.Width do
Image2.Canvas.Pixels[I,J] := StrtoInt(Copy(Memo2.Text, i*height+j+1, 7))
end;


Просто теперь получается надо брать по строкам начинающимися с $ и до строки заканчивающимся $.


 
pusrg ©   (2002-06-27 21:36) [7]

В том случае, если у тебя в каждой строчке 1 цвет, не проще ли использовать:
Image2.Canvas.Pixels[I,J] := StrtoInt(Memo1.Lines[k]);


 
B0ard   (2002-06-27 21:39) [8]

2pusrg
В том то и дело, что в Memo1 строки не столбиком, а сплошным текстом :-((


 
McSimm ©   (2002-06-28 12:35) [9]

>но чёрный цвет там $FFFFFFFF.

Вообще-то это белый цвет.
Кроме того, для передачи цвета RGB достаточно 6ти - значного значения, т.е. $FFFFFF

Может проще найти ошибку в коде, который эти строки формирует?
Насколько я помню там была строка
S := S + "#"+inttohex(image1.canvas.pixels[J, I],6);

Подправь так:
S := S + "#"+inttohex($FFFFFF and image1.canvas.pixels[J, I],6);
Тогда все значения будут 6ти-значными



Страницы: 1 вся ветка

Скачать: CL | DM;



Память: 0.47 MB
Время: 0.011 c
1-47523
newuser
2002-07-04 17:58
2002.07.15
Меню?


1-47559
Дмитрий Баранов
2002-06-27 11:27
2002.07.15
Кодировки


1-47419
Gonschik
2002-07-03 06:53
2002.07.15
Доступ к памяти чужой программы


1-47503
Вадим
2002-07-04 13:04
2002.07.15
HICON и TImageList


1-47274
Tahion
2002-06-25 10:14
2002.07.15
3. Как сделать НЕВЫДЕЛЕННЫМИ все элементы CheckListBox-а?




   Наверх