Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2006.09.10;
Скачать: CL | DM;

Вниз

Как из строки "< 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;
Скачать: CL | DM;

Наверх




Память: 0.5 MB
Время: 0.028 c
2-1156257201
J Cara
2006-08-22 18:33
2006.09.10
Вопрос по idHTTP1.Get


3-1152175448
WhiteBarin
2006-07-06 12:44
2006.09.10
Как получить скрипт вставляемой запись в БД через FIB+ ?


15-1155573637
qqqqqqq
2006-08-14 20:40
2006.09.10
Кто разбирается в ОС (Unix,Linux)? Какой Linux посоветуете?


2-1156019143
Silver...
2006-08-20 00:25
2006.09.10
Нужна помощь/подсказка


15-1155531739
Шмелъ
2006-08-14 09:02
2006.09.10
Linux shell