![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
HexToInt
Board © (2002-06-27 20:30:00)Нужно такое проделать, но Дельфи ругается. Может подскажите?
McSimm (2002-06-28 12:35:00) [1]>но чёрный цвет там $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ти-значными
B0ard (2002-06-27 21:39:00) [2]2pusrg
В том то и дело, что в Memo1 строки не столбиком, а сплошным текстом :-((
pusrg (2002-06-27 21:36:00) [3]В том случае, если у тебя в каждой строчке 1 цвет, не проще ли использовать:
Image2.Canvas.Pixels[I,J] := StrtoInt(Memo1.Lines[k]);
Board (2002-06-27 21:06:00) [4]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;
Просто теперь получается надо брать по строкам начинающимися с $ и до строки заканчивающимся $.
McSimm (2002-06-27 20:45:00) [5]смешно :),
когда я писал ответ я еще не видел >Board (27.06.02 20:40)
McSimm (2002-06-27 20:43:00) [6]I := StrToInt("$00ffcc");
обрати внимание - не # а $
:)
pusrg (2002-06-27 20:40:00) [7]Hex, это тоже число, но шестнадцатиричное.
Ф-ция IntToHex возвращает представление числа ввиде "шестнадцатиричной" строки и только.
Для обратного преобразования нужно перед этой строкой ставить знак $ и использовать ф-цию StrToInt, тоесть:
MyInt:=StrToInt(Format("$%s",[MyStr]));
P.S. Кстати этот вопрос недели полторы назад на форуме уже был.
Board (2002-06-27 20:40:00) [8]Просто число 00FFCC нужно перевести в Integer. Т.е. HexToInt(...)
rhf (2002-06-27 20:38:00) [9]а в чем проблема?