Top.Mail.Ru
Мастера DELPHI, Delphi programming community Титульная страница Поиск, карта сайта Написать письмо 
| Новости | Поиск | FAQ | Статьи | Книги | Новости VCL |
| Форумы ЧАТ | Орешник | KOL и MCK |
Форумы -» Основная («Начинающим»)/ Базы / WinAPI / Компоненты / Сети / Media / Игры / Corba и COM / KOL / FreePascal / .Net / Прочее / RSDN.ORG

« предыдущая ветвь | форум | следующая ветвь »

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]

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


Наверх

Титульная страница Поиск, карта сайта Написать письмо