Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "Начинающим";
Текущий архив: 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
2-1155950019
Mrakk
2006-08-19 05:13
2006.09.10
Открыть каталог в opendialog


2-1156140048
barakuda
2006-08-21 10:00
2006.09.10
Сложная выборка


15-1155928156
ronyn
2006-08-18 23:09
2006.09.10
Как прописать программно приложение в автозагрузку?


5-1139173939
homm
2006-02-06 00:12
2006.09.10
Хранение данных компонента


5-1139301255
Priest
2006-02-07 11:34
2006.09.10
Делегирование реализации интерфейсов





Afrikaans Albanian Arabic Armenian Azerbaijani Basque Belarusian Bulgarian Catalan Chinese (Simplified) Chinese (Traditional) Croatian Czech Danish Dutch English Estonian Filipino Finnish French
Galician Georgian German Greek Haitian Creole Hebrew Hindi Hungarian Icelandic Indonesian Irish Italian Japanese Korean Latvian Lithuanian Macedonian Malay Maltese Norwegian
Persian Polish Portuguese Romanian Russian Serbian Slovak Slovenian Spanish Swahili Swedish Thai Turkish Ukrainian Urdu Vietnamese Welsh Yiddish Bengali Bosnian
Cebuano Esperanto Gujarati Hausa Hmong Igbo Javanese Kannada Khmer Lao Latin Maori Marathi Mongolian Nepali Punjabi Somali Tamil Telugu Yoruba
Zulu
Английский Французский Немецкий Итальянский Португальский Русский Испанский