Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > Delphi программирование > Общие вопросы Delphi
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 27.08.2011, 23:09   #1
kettanaito
Веб-дизайнер
Форумчанин
 
Аватар для kettanaito
 
Регистрация: 11.08.2011
Сообщений: 305
По умолчанию WebBrowser из источника

Возможно загрузить страницу в TWebBrowser не по адресу, а по исходному коду самой страницы? У меня есть String со значением HTML кода, например:
Код:
<html>
<head>
<title>Title</title>
</head>
<body>
Some text here
</body>
</html>
Как загрузить в WebBrowser эту страницу, никуда не сохраняя ее при этом?
(Как-то WebBrowser.Navigate(pageStr), где pageStr - строки исходного кода страницы).
kettanaito вне форума Ответить с цитированием
Старый 28.08.2011, 00:33   #2
Voody
Форумчанин
 
Регистрация: 22.06.2009
Сообщений: 310
По умолчанию

Попробуйте такую процедуру:

Код:
procedure SetHTML(WebBrowser:TEmbeddedWB {TWebBrowser}; HTML: String);
var
  HTMLDocument: IHTMLDocument2;
  varHTML: Variant;
begin
  WebBrowser.Silent:=true;
  HTMLDocument := WebBrowser.Document as IHTMLDocument2;
  varHTML := VarArrayCreate([0, 0], varVariant);
  varHTML[0] := HTML;
  HTMLDocument.Write(PSafeArray(TVarData(varHTML).VArray));
  HTMLDocument.Close;
  WebBrowser.Silent:=false;
end;
Используется TEmbeddedWB, но должно и с TWebBrowser
Voody вне форума Ответить с цитированием
Старый 28.08.2011, 02:04   #3
kettanaito
Веб-дизайнер
Форумчанин
 
Аватар для kettanaito
 
Регистрация: 11.08.2011
Сообщений: 305
По умолчанию

Ошибка на этой строке:
Код:
HTMLDocument.Write(PSafeArray(TVarData(varHTML).VArray));
Как ее можно преобразовать под TWebBrowser?

P.S. Установил EmbeddedWB, проблема в той же строке.

Последний раз редактировалось kettanaito; 28.08.2011 в 02:13.
kettanaito вне форума Ответить с цитированием
Старый 28.08.2011, 02:28   #4
Voody
Форумчанин
 
Регистрация: 22.06.2009
Сообщений: 310
По умолчанию

Что за ошибка?

Попробуйте добавить модуль

Код:
uses activex
Voody вне форума Ответить с цитированием
Старый 28.08.2011, 13:17   #5
kettanaito
Веб-дизайнер
Форумчанин
 
Аватар для kettanaito
 
Регистрация: 11.08.2011
Сообщений: 305
По умолчанию

Voody, модуль добавлен, но ошибка все-равно есть.
Пробую делать так:
Код:
procedure SetHTML(WebBrowser:TEmbeddedWB; HTML: String);
var
  HTMLDocument: IHTMLDocument2;
  varHTML: Variant;
begin
  WebBrowser.Silent:=true;
  HTMLDocument := WebBrowser.Document as IHTMLDocument2;
  varHTML := VarArrayCreate([0, 0], varVariant);
  varHTML[0] := HTML;
  HTMLDocument.Write(PSafeArray(TVarData(varHTML).VArray));
  HTMLDocument.Close;
  WebBrowser.Silent:=false;
end;
...
procedure TForm1.Button1Click(Sender:TObject);
begin
SetHTML(webb,'<div>Text here</div>');
end;
kettanaito вне форума Ответить с цитированием
Старый 28.08.2011, 18:56   #6
Voody
Форумчанин
 
Регистрация: 22.06.2009
Сообщений: 310
По умолчанию

Может вы все-таки скажете, что за ошибка... Дело быстрее пойдет
Voody вне форума Ответить с цитированием
Старый 28.08.2011, 19:00   #7
Пепел Феникса
Старожил
 
Аватар для Пепел Феникса
 
Регистрация: 28.01.2009
Сообщений: 21,000
По умолчанию

Код:
procedure SetHTML(WebBrowser:TWebBrowser; HTML: String)
Хорошо поставленный вопрос это уже половина ответа. | Каков вопрос, таков ответ.
Программа делает то что написал программист, а не то что он хотел.
Функции/утилиты ждут в параметрах то что им надо, а не то что вы хотите.
Пепел Феникса вне форума Ответить с цитированием
Старый 29.08.2011, 00:07   #8
kettanaito
Веб-дизайнер
Форумчанин
 
Аватар для kettanaito
 
Регистрация: 11.08.2011
Сообщений: 305
По умолчанию

Пепел Феникса, что при работе с TWebBrowser, что при TEmbeddedWM, ошибка одна и та же. Я не ошибся в назначении класса.

Текст ошибки:
Цитата:
Access violation at address 005B56776 in module 'myapp.exe'
Адрес именно этой строки:
Код:
HTMLDocument.Write(PSafeArray(TVarData(varHTML).VArray));
kettanaito вне форума Ответить с цитированием
Старый 29.08.2011, 15:13   #9
Voody
Форумчанин
 
Регистрация: 22.06.2009
Сообщений: 310
По умолчанию

Перед загрузкой вашего кода нужно браузеру дать загрузить любую страницу по http-адресу. Например так:

Код:
procedure TForm1.FormCreate(Sender: TObject);
begin
 EmbeddedWB1.Navigate('http://ya.ru/');
end;
После этого все будет работать.
Почему так? не знаю, не интересно разбираться
Voody вне форума Ответить с цитированием
Старый 29.08.2011, 15:32   #10
Пепел Феникса
Старожил
 
Аватар для Пепел Феникса
 
Регистрация: 28.01.2009
Сообщений: 21,000
По умолчанию

можно перейти на пустую страницу, about:blank(не требует инета)
а причина видимо в том что документ не сформирован, а мы пытаемся в него записать..
(за два года эту деталь забыл)
Хорошо поставленный вопрос это уже половина ответа. | Каков вопрос, таков ответ.
Программа делает то что написал программист, а не то что он хотел.
Функции/утилиты ждут в параметрах то что им надо, а не то что вы хотите.
Пепел Феникса вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Макрос на изменение источника связи между Word и Excel Василий. Microsoft Office Word 16 24.11.2018 20:29
Алгоритмы нахождения источника света =Student= Мультимедиа в Delphi 2 11.06.2010 07:31
БД в Visual C++ 2008. Выбор типа источника данных shurik_7866 Общие вопросы C/C++ 0 03.04.2010 20:09
Фиксация источника света в OpenGL Rin Мультимедиа в Delphi 5 29.03.2010 22:44
Выбор источника обновлений Bu$ter Microsoft Office Excel 20 12.11.2008 09:46