![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
Распознование ссылок в тексте [D7, NT4, Win2k, WinXP]
vidiv © (2005-09-18 11:31:00)Есть текст, надо найти в нем ссылки и выдилить соответственно! Главное - надо делать очень быстро на большом тексте (100кб)!
У когонибудь есть стоющие предложения как это сделать? Желательно без регулярных выражений. (Нормальную реализацию последних я еще не видел для дельфи)
Anatoly Podgoretsky (2005-09-19 11:10:00) [1]Это значит (Template, src)
vidiv (2005-09-19 06:51:00) [2]
> vertal © (18.09.05 21:44) [4]
Логику понял... Надо будет подумать....
> Anatoly Podgoretsky © (18.09.05 13:55) [3]
> Это простой POS по шаблону и смещением начала текста
Pos по шаблону, это как?
vertal (2005-09-18 21:44:00) [3]Можно например так
var
SrcText, SrcHyperlink: Pchar;
HyperlinkChars: set of char = ['A'..'Z','a'..'z','.','/',что там еще];
DelimiterChars: set of char = [все, что отделяет гиперссылки от окружающего их текста];
begin
0. SrcText := SourceText;
1. while SrcText^ in DelimiterChars do Inc(SrcText);
2. Если SrcText = #0, то GOTO 10
4. SrcHyperlink := SrcText
5. while not (SrcText in [DelimiterChars, ':','.','/',#0]) do Inc(SrcText);
6. Если ((SrcText^ = '.') или (SrcText^ = ':') и ((SrcText + 1)^ = '/') и ((SrcText + 2)^ = '/')) и при этом SrcHyperlink указывает на префикс начала гиперссылки, то найдена гиперссылка, иначе GOTO 9
7. while (SrcText^ in HyperlinkChars) do Inc(SrcText));
8. Найдена ссылка SrcHyperlink, ее длина равна SrcText - SrcHyperlink: обработать ее
9. GOTO 1
10. Конец
end
В пункте 6. определять, указывает ли SrcHyperlink на префикс начала гиперссылки, можно через
SetString(HyperlinkPrefix, SrcHyperlink, SrcText - SrcHyperlink);
ValidPrefixes.IndexOf(HyperlinkPrefix) <> -1, где в ValidPrefixes типа THashedStringList загружены все допустимые префиксы.
Anatoly Podgoretsky (2005-09-18 13:55:00) [4]Это простой POS по шаблону и смещением начала текста
vidiv (2005-09-18 12:40:00) [5]
> Илья Бобров (18.09.05 11:56) [1]
Это немного не то, как я понимаю! Мое приложение не имеет ни форм ни визуальных окон. Требуется просто обработка текста.
Илья Бобров (2005-09-18 11:56:00) [6]Используй JVCL300CompleteJCL195-Build1848 набор компонентов, там есть RishEdit с автоматическим выделением ссылок и возможностью перехода по ним.