Форум программистов «Весельчак У»
  *
Добро пожаловать, Гость. Пожалуйста, войдите или зарегистрируйтесь.
Вам не пришло письмо с кодом активации?

  • Рекомендуем проверить настройки временной зоны в вашем профиле (страница "Внешний вид форума", пункт "Часовой пояс:").
  • У нас больше нет рассылок. Если вам приходят письма от наших бывших рассылок mail.ru и subscribe.ru, то знайте, что это не мы рассылаем.
   Начало  
Наши сайты
Помощь Поиск Календарь Почта Войти Регистрация  
 
Страниц: [1]   Вниз
  Печать  
Автор Тема: TWebBrowser, Просмотр кода, Access Violation  (Прочитано 4059 раз)
0 Пользователей и 1 Гость смотрят эту тему.
095
Гость
« : 22-05-2010 07:23 » new

Сутки добрые, Уважаемые Знатоки!

Помогите с проблемой в TWebBrowser, загрузкой страницы и просмотром кода:

Код:
procedure TForm1.SpeedButton1Click(Sender: TObject);
var //StartN,EndN:integer;
i:integer;
s:string;
begin
//идем на страницу
try //обезопасим
WebBrowser1.Navigate('http://www.google.com');
except
ShowMessage('немогу, вруби инет');
end;

//выводим текст исходного кода страницы
ShowMessage(GetHTMLSource(WebBrowse r1));

............ на этом месте выскакивает Access Violation

Функция GetHTMLSource(WebBrowser1):

Код:
PersistStream:=WB.Document as IPersistStreamInit;
MStream:=TMemoryStream.Create;
SL:=TStringList.Create;
try
Stream:=TStreamAdapter.Create(MStre am,soReference) as IStream;
GResult:=PersistStream.Save(Stream, True); //тут и выскакивает AV
if FAILED(GResult) then
MessageDlg('Ошибочка при передачи HTML source',mtError,[mbOk],0);
finally
MStream.Position:=0;
SL.LoadFromStream(MStream);
Result:=SL.Text;
MStream.Free;
SL.Free;
end;

Если функцию GetHTMLSource навесить на отдельную кнопку - все, соответственно, работает нормально... только нажимать надо на 2 кнопки: сначала переход на страницу, и только потом отображение кода... А нужно всетаки все за один раз... Помогите?
Записан
RXL
Технический
Администратор

ru
Offline Offline
Пол: Мужской

WWW
« Ответ #1 : 22-05-2010 07:44 » 

095, во-первых, код плохо читаемый - форматируй его! Во-вторых, нефига не понятно: объявления типов не показаны, функции не видно - только какой-то кусочек. Сам бы ты что-нибудь понял?

Полагаю, что трабла может быть в асинхронности - смотри доку на TWebBrowser.
Записан

... мы преодолеваем эту трудность без синтеза распределенных прототипов. (с) Жуков М.С.
095
Гость
« Ответ #2 : 22-05-2010 08:09 » 

НАШЕЛ!

  While WebBrowser1.Busy do Application.ProcessMessages;
и как он освободился:
  wbCONTENT:=GetHTMLSource(WebBrowser1);

Всем спасибо, все учту!
Записан
Страниц: [1]   Вверх
  Печать  
 

Powered by SMF 1.1.21 | SMF © 2015, Simple Machines