Поиск по html коду в соответствии с выделенным текстом

Вопросы программирования и использования среды Lazarus.

Модератор: Модераторы

Поиск по html коду в соответствии с выделенным текстом

Сообщение Sniper » 21.04.2018 11:47:41

Компонент TFrameBrowser

Код: Выделить всё
str:string;
str := FrameBrowser1.SelText;
str_start := FrameBrowser1.SelStart;
str_length := FrameBrowser1.SelLength;

Получили выделенную строку из HTML
Теперь хотелось бы получить строку с HTML кодом который включает выделенную строку.
Код: Выделить всё
Edit5.Text := FrameBrowser1.ToString.Substring(str_start-10, str_length+10);


Но так, похоже, не выделяется именно HTML код. Как получить кусок HTML кода вместе с выделенным текстом?
Sniper
постоялец
 
Сообщения: 472
Зарегистрирован: 28.05.2005 13:02:42

Re: Поиск по html коду в соответствии с выделенным текстом

Сообщение Vadim » 22.04.2018 10:11:16

Sniper
А просто ToString у Вас что выдаёт?
Vadim
долгожитель
 
Сообщения: 4112
Зарегистрирован: 05.10.2006 08:52:59
Откуда: Красноярск

Re: Поиск по html коду в соответствии с выделенным текстом

Сообщение Sniper » 23.04.2018 12:05:43

Vadim писал(а):Sniper
А просто ToString у Вас что выдаёт?

Уже не помню, я родвинулся немного дальше.

Покумекал я и заменил компонент на Htmlviewer. Начало работать, но немного неправильно.
Код: Выделить всё
var start : integer = 0;
      endl : integer = 0;
      page_source: WideString;
      page_ansi:string;
      posit:integer = 0;
      start_cel: integer;
      stop_cel: integer;

start := HtmlViewer1.SelStart;
endl := HtmlViewer1.SelLength;
s := HtmlViewer1.SelText;
page_source := HtmlViewer1.DocumentSource; // получаем исходный код - работает
posit := HtmlViewer1.FindSourcePos(start); //работает

start_cel := posit-20; // двадцать символов до
stop_cel := abs(endl)+20; // двадцать после
page_ansi := Utf8ToAnsi(page_source);
LabeledEdit1.Text := page_ansi.Substring(start_cel, stop_cel); // здесь выводится 7 символов до и три после 5 до и 6 после, в зависимости от выбора, т.е всегда меньше


Сначала я думал это из-за WideString. Поправил, вродебы нет. Как же сделать чтобы выводилось нужное количество символов до и после?
Sniper
постоялец
 
Сообщения: 472
Зарегистрирован: 28.05.2005 13:02:42

Re: Поиск по html коду в соответствии с выделенным текстом

Сообщение Vadim » 23.04.2018 12:34:24

Sniper писал(а):Уже не помню,

Я не зря спрашиваю. Вдруг у Вас там самый обычный текст? Тогда кодам взяться просто неоткуда...
Vadim
долгожитель
 
Сообщения: 4112
Зарегистрирован: 05.10.2006 08:52:59
Откуда: Красноярск

Re: Поиск по html коду в соответствии с выделенным текстом

Сообщение Sniper » 23.04.2018 12:56:59

Vadim писал(а):
Sniper писал(а):Уже не помню,

Я не зря спрашиваю. Вдруг у Вас там самый обычный текст? Тогда кодам взяться просто неоткуда...



Htmlviewer1.ToString выдает THtmlViewer, но явно оно у меня в новом коде не используется
HtmlViewer1.DocumentSource выдает исходный код
IntToStr(HtmlViewer1.SelStart) выдает положительное число
IntToStr(HtmlViewer1.SelLength) выдает отрицательное равное длинне выделенного фрагмента
IntToStr(HtmlViewer1.FindSourcePos(HtmlViewer1.SelStart)); выдает позицию в исходном коде относительно выбранного фрагмента
Sniper
постоялец
 
Сообщения: 472
Зарегистрирован: 28.05.2005 13:02:42

Re: Поиск по html коду в соответствии с выделенным текстом

Сообщение Vadim » 23.04.2018 14:03:43

Попробуйте выбрать подстроку, не преобразовывая UTF8 в ANSI, функцией Utf8Copy (модуль lclproc). Если, конечно, у Вас там DocumentSource в Utf8. Ну и, заодно, уточните charset этого самого DocumentSource...
Vadim
долгожитель
 
Сообщения: 4112
Зарегистрирован: 05.10.2006 08:52:59
Откуда: Красноярск

Re: Поиск по html коду в соответствии с выделенным текстом

Сообщение Sniper » 25.04.2018 09:42:50

Сделал пример проекта.
Проблема 1: Разница ещё в том с какой стороны делать выделение. Если справа навелво, то получается один код, если слева направо, то другой
Проблема 2: Функция UTF8ToAnsi не помогает, всеравно появляются Hint о том, что данные при авто переконвертации могут потеряться.
У вас нет необходимых прав для просмотра вложений в этом сообщении.
Sniper
постоялец
 
Сообщения: 472
Зарегистрирован: 28.05.2005 13:02:42


Вернуться в Lazarus

Кто сейчас на конференции

Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 35

Рейтинг@Mail.ru