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

Вниз

Twebbrowser+IIHTMLDocument2 парсинг + innerhtml ?   Найти похожие ветки 

 
vegarulez   (2015-09-16 07:20) [0]

Привет всем мастерам!
Вопрос заключается вот в чем - хочу с локальной машины загружать шаблон html документа в IIHTMLDocument2 потом добавлять нужные мне строки и отображать в Twebbrowser.

Начинаем с первого.
1.создал документ в кодировке UTF-8

<html>
<head>
<meta http-equiv="content-type" content="text/html;charset=utf-8"/>
</head>
<body >Хелло ВОРЛД!
<table>
<tr><td>тут типа таблица которую буду динамически добавлять</td>
<td> тут тоже</td></tr>
</table>
</body>
</html>


открываю его в IIHTMLDocument2 но он мне его в анси показывает кракозябрами есс-но.
Я подозреваю, что так происходит потому что я его через Tstringlist в DOM документ помещаю, как стринг, чтобы парсить.
Подскажите что не так. вот код:


procedure TFormMain.Button4Click(Sender: TObject);
var
 Flags: OLEVariant;
 v: Variant;
 i:Integer;
 Document: IHTMLDocument2;
 Strl: TStringList;
 sHTMLFile: string;
begin

 try
     // Документ необходимо создать только один раз за текущую сессию работы
 if WebBrowser2.Document = nil then
   WebBrowser2.Navigate("about:blank");
 // Ожидаем создания документа и позволяем обрабатывать все сообщения
 while WebBrowser2.Document = nil do
   Application.ProcessMessages;
 Document := WebBrowser2.Document as IHtmlDocument2;
  Strl := TStringList.Create;
  sHTMLFile:= "html\1.htm";
  sHTMLFile:= ExtractFilePath(paramstr(0))+sHTMLFile;
  if FileExists(sHTMLFile) then
   Strl.LoadFromFile(sHTMLFile);
  //Document:= CreateComObject(Class_HTMLDOcument) as IHTMLDocument2;
  Document.designMode:="on";
  while Document.readyState <> "complete" do
          Application.ProcessMessages;
          v := VarArrayCreate([0, 0], VarVariant);

        v[0] := Strl.Text;
        Document.Write(PSafeArray(System.TVarData(v).VArray));
        Document.designMode := "off";
        while Document.readyState <> "complete" do
          Application.ProcessMessages;
 finally
 end;

end;


 
vegarulez   (2015-09-16 07:51) [1]

ну сообственно да в этом дело и было. Поставил utf8toansi и стало правильно отображаться.

v[0] := utf8toansi(Strl.Text);


 
sniknik ©   (2015-09-16 08:31) [2]

> да в этом дело и было.
вряд ли, скорее прямо в исходном файле неправильная кодировка.


 
vegarulez   (2015-09-16 09:01) [3]

исходный в utf8.
просто я его считываю как string и загружаю потом также и поэтому думаю что в этом была проблема. хотелось бы услышать правильный ответ, от того кто понимает, почему utf8toansi помогло в этой ситуации. Правильно ли я думаю.


 
vegarulez   (2015-09-16 09:05) [4]

потому как кто-то до этого писал что дельфи по умолчанию переделывает стринг под анси. не важно utf не utf - и поэтому поместив в стринг я получал абракадабру если стринг загружал в Twebbrowser без перекодировки.

Правильно описываю ситуацию?
Гуру, подскажите.


 
sniknik ©   (2015-09-16 10:20) [5]

> почему utf8toansi помогло в этой ситуации.
потому что utf8 неправильная кодировка... ты не открываешь урл, ты пишешь прямо в документ, а IE работает с анси... если бы открыл нормально то он бы сам преобразовал.

> переделывает стринг под анси.
тогда, по твоей логике нужна была бы  функция ansitoutf8 но помогла utf8toansi. сам же пишешь.


 
имя   (2015-10-20 17:27) [6]

Удалено модератором



Страницы: 1 вся ветка

Текущий архив: 2017.07.16;
Скачать: CL | DM;

Наверх




Память: 0.48 MB
Время: 0.005 c
11-1265717864
tippa
2010-02-09 15:17
2017.07.16
runtime error 216


15-1463492615
Crysis
2016-05-17 16:43
2017.07.16
Отловить завершение чужих потоков


15-1463758069
Empleado
2016-05-20 18:27
2017.07.16
Получение данных о папке без FindFirst..FindNext


2-1442377244
vegarulez
2015-09-16 07:20
2017.07.16
Twebbrowser+IIHTMLDocument2 парсинг + innerhtml ?


15-1463907824
Jeer
2016-05-22 12:03
2017.07.16
Питерцы - победители в чм по программированию.