Форум программистов, компьютерный форум, киберфорум
Наши страницы
Delphi для начинающих
Войти
Регистрация
Восстановить пароль
 
Рейтинг 4.73/15: Рейтинг темы: голосов - 15, средняя оценка - 4.73
Naidjel
4 / 4 / 0
Регистрация: 20.11.2011
Сообщений: 36
1

редактор html кода

26.11.2011, 15:44. Просмотров 2684. Ответов 10
Метки нет (Все метки)

Помогите пожалйста! хочу создать не визуальный html редактор в делфи. как сделать чтобы twebbrowser показывал не саму страничку а ее код?
0
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
26.11.2011, 15:44
Ответы с готовыми решениями:

HTML редактор в программе для получения HTML письма
Собственно не могу решить проблему с HTML редактором в программе. хочу чтоб...

HTML редактор
Добрый вечер. Пишу HTML редактор, и необходимо, чтобы при написание кода в...

Визуальный html-редактор
Дайте пример html-РЕДАКТОРА НАПИСАНОГО В DELPHI 7 ИЛИ ИСХОДНИК НАДО ОЧЕНЬ...

Редактор текста в HTML - страничках
Всем привет!))) Есть HTML страница где находтся только текст без кнопок,...

Цвет активной строки (редактор кода)
Возможно ли, как-то изменить цвет активной строки - rad studio xe2?

10
dtsey
112 / 78 / 30
Регистрация: 10.09.2011
Сообщений: 263
26.11.2011, 16:28 2
Цитата Сообщение от Naidjel Посмотреть сообщение
Помогите пожалйста! хочу создать не визуальный html редактор в делфи. как сделать чтобы twebbrowser показывал не саму страничку а ее код?
Можно использовать RichEdit, куда потребуется загружать html-код страницы. Делать это просто:
Delphi
1
2
3
4
5
6
7
8
9
10
var h.TIdHttp;
s: string;
begin
h:=TIdHttp.Create(nil);
h.handleredirects:=true;
h.request.useragent:='Mozilla/5.0 (X11; U; Linux i686; cs-CZ; rv:1.7.12) Gecko/20050929';
s:=h.GET('ссылка на страницу');
RichEdit1.Text:=s;
h.free;
end;
Добавлено через 32 секунды
В uses добавь idhttp
1
Naidjel
4 / 4 / 0
Регистрация: 20.11.2011
Сообщений: 36
26.11.2011, 18:13  [ТС] 3
хорошо, а как можно в ричедите сделать автоисправление неправильного написания тэгов хтмл? вообще как можно организовать автоисправление?
0
dtsey
112 / 78 / 30
Регистрация: 10.09.2011
Сообщений: 263
26.11.2011, 18:29 4
Цитата Сообщение от Naidjel Посмотреть сообщение
хорошо, а как можно в ричедите сделать автоисправление неправильного написания тэгов хтмл? вообще как можно организовать автоисправление?
Ну, здесь как минимум - работа с регулярными выражениями, кучей случаев и т.д. Вам нужно будет по сути обучить программу. Это довольно сложно...
0
Naidjel
4 / 4 / 0
Регистрация: 20.11.2011
Сообщений: 36
26.11.2011, 18:32  [ТС] 5
это как раз понятно)) а можно хотя бы какой маленький примерчик?) например, чтобы <bady>на <body> исправлял?
0
digim0n
84 / 84 / 16
Регистрация: 11.11.2011
Сообщений: 259
26.11.2011, 18:44 6
Naidjel, вариантов есть множиство... например...
*- выделение др цветом, для того что бы ты обратил внимание... (таймер ищет предполагаемые ошибки и выделяет их др цветом)
*- автоисправление...(тут уже нужно указывать варианты ошибок и тоже по таймеру будут они сами правиться без участия юзера... например если ты написал <bodi> или <bode> и т.д..., а нужно <body> тогда ищется текст и заменяется на правельный)...
Delphi
1
2
html.text:=StringReplace(html.text, '<bodi>', '<body>',[rfReplaceAll, rfIgnoreCase]);
html.text:=StringReplace(html.text, '<bode>', '<body>',[rfReplaceAll, rfIgnoreCase]);
что бы по стопятсот раз не вызывать стрингреплейс, можно создать список ошибок и список правильного написания, а затем пустить его на автозамену...
Delphi
1
2
3
4
5
6
7
8
var
   i:integer;
begin
//ListBox1.Text - список всевозможных неправильных написаний например тега <body>
for i:=0 to ListBox1.Items.Count-1 do begin
html.text:=html.text:=StringReplace(html.text,ListBox1.Items[i], '<body>',[rfReplaceAll, rfIgnoreCase]);
end;
end;
*- полуавтоисправление... поиск предполагаемых ошибок и запрос на их исправление... (поиск ошибок по нажатию на клавишу, например, "Проверить ошибки"... текст ищется и выдается запрос на поправку... а ты уже подтверждаеш или, если ты уверен на 100%, отменяеш редактирование...)
1
Naidjel
4 / 4 / 0
Регистрация: 20.11.2011
Сообщений: 36
26.11.2011, 19:05  [ТС] 7
а подсветку тэгов как сделать?
0
digim0n
84 / 84 / 16
Регистрация: 11.11.2011
Сообщений: 259
26.11.2011, 21:15 8
Naidjel, в RichEdit можно: SelStart, SelLength, SelAttributes.
Delphi
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
const
  word: array[1..18] of string[9] = ('<html>','</html>','<body>','</body','<b>','</b>','<i>',
    '</i>','<center>','</center>','<form','</form>','<tag>','</tag>','<br>','</br>','<tr>',
    '</tr>');
var
  k,i: integer;
begin
  for i:=1 to length(word) do
    begin
      k:=-length(word[i]);
      repeat
        k:=RichEdit1.FindText(word[i],k+length(word[i]),
           length(RichEdit1.Text)-k-length(word[i]),[stWholeWord]);
        RichEdit1.SelStart:=k;
        RichEdit1.SelLength:=length(word[i]);
        RichEdit1.SelAttributes.Style:=[fsBold];
        Application.ProcessMessages;
      until k < 0;
    end;
end;
0
Naidjel
4 / 4 / 0
Регистрация: 20.11.2011
Сообщений: 36
26.11.2011, 22:52  [ТС] 9
пасиб всем ребята, вы очень мне помогаете!) а вот еще вопрос: я так думаю, что базу исправлений надо делать через цикл, который в каждом тэге вместо разных букв, которые в него входят перечисляет весь алфавит. причем цикл както должен смотреть сколько букв в тэге и иметь какойто лимит исправлений. ну чтото типа если в теге <body>3 буквы неправильных, значит пользователь чтото другое имеет ввиду)
это можно както реализовать?

Добавлено через 1 час 0 минут
а вот еще вопрос: как вставить адрес картинки туда где курсор стоит. Пишу
RichEdit1.Lines.LoadFromFile(OpenDialog1.FileName);
выдает ошибку.
0
dtsey
112 / 78 / 30
Регистрация: 10.09.2011
Сообщений: 263
26.11.2011, 22:55 10
Вам придется брать каждое слово в <>, сравнивать его со всеми вариантами всех тегов, искать необходимый и заменять...
Это довольно муторно, ибо тэгов очень много, а количество вариаций их ошибок - ...
Алсо, почитайте о pos и RegExpr
0
Naidjel
4 / 4 / 0
Регистрация: 20.11.2011
Сообщений: 36
27.11.2011, 12:37  [ТС] 11
ну а как насчет второго вопроса про адрес картинки?

Добавлено через 1 час 15 минут
Кстати, как я понял, при автозамене программа ориентируется не на ошибки, а на количество совпадающих символов в тэге. То есть, алгоритм работы автозамены гдето такой:
1. изначально в программе несколько массивов с тэгами по количеству символов
2. ищем "<" или "<[пробел]"
3. подсчитываем количество символов попавшегося тэга
4. задаем условие количества совпадающих символов (если символов 10 или 9, то минимум 5 символов должны совпадать, у 8,7 совпадают 4; 6,5 - 3; 4,3 -2
5.исправим на правильный тэг


А вот как это все написать кодом?)

Добавлено через 11 часов 50 минут
ни у кого нету идей?))
0
27.11.2011, 12:37
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
27.11.2011, 12:37

Парсинг HTML кода
Добрый день! Есть такой &lt;span class=&quot;ui-button-text&quot;&gt; ...

Форматирование HTML кода
Вообщем пишу на дельфях прогу, смысл в том, что бы имея, например, вот такой...

Парсинг HTML кода
Добрый день! Есть такая &lt;/span&gt;&lt;/a&gt;&lt;span class=&quot;b_user_menu__item b_drop...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
11
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2018, vBulletin Solutions, Inc.
Рейтинг@Mail.ru