Форум: "Начинающим";
Текущий архив: 2006.09.10;
Скачать: [xml.tar.bz2];
ВнизКак из строки "< font color = white >" вытянуть цвет? Найти похожие ветки
← →
Старт7 (2006-08-22 06:58) [0]И цвет, чтобы был не в виде текста, а в виде соответствующей цифры?
← →
tButton © (2006-08-22 07:26) [1]прикольно.
s:="<font color=white>";
p:=pos("color=", s);
l:=length(s);
col:="";
for i:=p to l do
begin
c:=s[i];
if (c=">")or(c=" ")or(c=""")or(c="""") then break;
col:=col+c;
end;
// чистим кавычки
p:=pos(""", col);
while p<>0 do begin
delete(s, p ,1);
p:=pos(""", col);
end;
// чистим апострофы
p:=pos("""", col);
while p<>0 do begin
delete(s, p ,1);
p:=pos("""", col);
end;
// по желанию - чистим пробелы
// в результате в переменной col строка содержащая
// текстовое или hex (а иногда и rgb описание цвета
// интерпретация сего в цвет в формате ОП на совести автора сабжа
код писался "в уме", мож что напутал в функциях
← →
tButton © (2006-08-22 07:37) [2]для интерпритации hex-цвета
function hex2color(hex: string): tColor;
begin
if (length(hex)<>6)or(length(hex)<>7) then exit; // умнее не придумал, потому что описание цвета занимает шесть байт. иногда префиксуется решёткой
if hex[1] = "#" delete(hex, 1, 1);
// и всё равно могут возникнуть исключения
r:=hextoint(copy(hex, 1, 2));
g:=hextoint(copy(hex, 3, 2));
b:=hextoint(copy(hex, 5, 2));
result:=rgb(r, g, b);
end;
по-хорошему length(hex)=7 и hex[1]="#"
иначе это нифига не hex
а просто лабуда
такое ни один броузер не поймёт
для интерпретации текстового цвета... ну на вскидку я бы взял tStringList
и зас... заполнил бы его чем-то вродеwhite=#ffffff
red=#ff0000
вот в таком акцепте
а потомvalues[col] // col - строка с текстовым описанием цвета
для rgb... ну наверное опять парсить с умом =)
формат там такой rgb($r, $g, $b)
но в свойствах, емнип, такое не используется, только в стилях
опять же, как узнать в каком формате цвет?
"да прибудет с тобой сила" (с)
если col[1]="#" и length(col)=7 - однозначно hex
если copy(col, 1, 4) = "rgb(" - однозначно rgb
иначе - текстовое либо охинея
ПыСЫ
ну нифига я нагородил =)
← →
Ketmar © (2006-08-22 09:59) [3]> [2] tButton © (22.08.06 07:37)
> ну нифига я нагородил
действительно. во условиям задачи это всё личшнее. если нужен "цвет в виде цифры", то можно смело брать clBlack. всегда. всё равно вряд ли сильно различишь цвет "0" и "9".
← →
tButton © (2006-08-22 10:09) [4]
> во условиям задачи это всё личшнее.
я добрый и люблю парсить =)
> вряд ли сильно различишь цвет "0" и "9"
эт смотря чьим глазом и на каком девайсе)
← →
Наиль © (2006-08-22 10:10) [5]
> всё равно вряд ли сильно различишь цвет "0" и "9".
> в виде соответствующей цифры
А я сразу и не заметил.
← →
Zeqfreed © (2006-08-22 12:00) [6]> [2] tButton © (22.08.06 07:37)
Ещё можно записывать цвет как #hhh, где h - шестнадцатиричная цифра, причем #abc = #aabbcc.
← →
tButton © (2006-08-23 08:20) [7]
> Ещё можно записывать цвет как #hhh
эммм... не знал =)
т.е. например, #c80 = #cc8800?
имхо, если такое и используется - то крайне редко и не основываясь на декларациях w3c =)
← →
Ketmar © (2006-08-23 11:16) [8]> [6] Zeqfreed © (22.08.06 12:00)
за такие хаки -- пожизненый эцих без гвоздей. %-)
← →
Anatoly Podgoretsky © (2006-08-23 15:02) [9]В указанной постановке, кроме парсинга надо завести еще и таблицу соответствий
← →
Zeqfreed © (2006-08-23 15:15) [10]> [7] tButton © (23.08.06 08:20)
> [8] Ketmar © (23.08.06 11:16)
http://www.w3.org/TR/CSS21/syndata.html#color-units
Читаем до просветления :) Не доверяете мне, ага? Доверьте же спецификации!! :)The format of an RGB value in hexadecimal notation is a "#" immediately followed by either three or six hexadecimal characters. The three-digit RGB notation (#rgb) is converted into six-digit form (#rrggbb) by replicating digits, not by adding zeros. For example, #fb0 expands to #ffbb00. This ensures that white (#ffffff) can be specified with the short notation (#fff) and removes any dependencies on the color depth of the display.
← →
Ketmar © (2006-08-23 16:15) [11]> [10] Zeqfreed © (23.08.06 15:15)
где это я сказал, что не доверяю? я всего лишь имел в виду, что это хак, даже если и описан в стандарте. и этот хак мне не нравится. %-)
← →
Zeqfreed © (2006-08-23 16:20) [12]> [11] Ketmar © (23.08.06 16:15)
Просто для меня словахак
испецификация
никак не могут быть чем-то связанным. По большей части мое высказывание относилось к [7], конечно.
← →
Ketmar © (2006-08-23 16:34) [13]> [12] Zeqfreed © (23.08.06 16:20)
ну, пусть "фича". хотя это, всё же, документированый хак. %-)
Страницы: 1 вся ветка
Форум: "Начинающим";
Текущий архив: 2006.09.10;
Скачать: [xml.tar.bz2];
Память: 0.48 MB
Время: 0.045 c