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

Вниз

Ошибка при загрузки страницы в WebBrowser   Найти похожие ветки 

 
olorint ©   (2005-03-23 09:42) [0]

Народ помогите разобраться. Разбираюсь с программой (писал не сам).Есть функция, в которой генерируется код html страницы, и потом выводиться на форму в компоненте WebBrowser. На некоторых компах программа выдает ошибку "access violation" в строчке Document.Write(PSafeArray(TVarData(v).VArray)).
Поставил проверку на готовность страницы, для версий ie ниже 6.0. Но все равно не помогает. Прошелся пошагово. Параметр Form1.Browser.ReadyState дает значение 4 =READYSTATE_COMPLETE, но ошибка остается. Пробовал перед этим загрузить пустую страницу "about:blank". Ноль реакции. Если ставить исключение на ошибку, то удается избежать только вывода сообщения на экран, но Document=nil.Не пойму в чем причина, где я ошибаюсь.
Вот пример кода
var
 V: OleVariant;
 Document: IHTMLDocument2;
 FileStrings : TStrings;
begin
.............................
Document := Form1.Browser.Document as IHTMLDocument2;
V := VarArrayCreate([0, FileStrings.Count-1], varVariant);
for i:= 0 to FileStrings.Count-1 do
begin
  V[i] := FileStrings[i] + chr(13) + chr(10);
end;
while (Form1.Browser.ReadyState <> READYSTATE_COMPLETE) do begin
sleep(300);
Application.ProcessMessages;
end;
Document.Write(PSafeArray(TVarData(v).VArray));
Document.Close;


 
Piter ©   (2005-03-23 10:51) [1]

olorint ©   (23.03.05 9:42)
Поставил проверку на готовность страницы, для версий ie ниже 6.0


а что, в IE 6.0 проверять не надо?

У тебя цикл проверки на готовность где? Что он там делает? Проверять на готовность нужно ПОСЛЕ navigate("about:blank"), но ДО Document.Write(PSafeArray(TVarData(v).VArray));


 
LordNet ©   (2005-03-23 11:46) [2]

Пришли исходники на lordnet@ukr.net если не в лом!!


 
olorint ©   (2005-03-23 14:47) [3]


> а что, в IE 6.0 проверять не надо?

Я не совсем ясно выразился. Дело в том , что ie 6.0 позволяет асинхронно обрабатывать страницы и с ним не должно быть проблем. Но проверка работает для всех версий.
вот эти строки и есть цикл Проверяет пока страница не загружена и ждет.
while (Form1.Browser.ReadyState <> READYSTATE_COMPLETE) do begin
sleep(300);
Application.ProcessMessages;
end;


 
Piter ©   (2005-03-23 22:13) [4]

ты вообще понимаешь что я говорю?

Сначала надо сделать Navigate("about:blank"), потом цикл ожидания, ПОТОМ Document.Write(PSafeArray(TVarData(v).VArray));

Сделай такую программу и выложи ее исходный код здесь


 
olorint ©   (2005-03-25 11:09) [5]

Вот выдержка из программы.
procedure TForm1.FormActivate(Sender: TObject);
var
V: OleVariant;
Document: IHTMLDocument2;
FileStrings : TStrings;
begin
if Browser.Document = nil then
   Browser.Navigate("about:blank" ) ;
Document := Browser.Document as IHtmlDocument2;
//наполенение Filestrings
................................................
V := VarArrayCreate([0, FileStrings.Count-1], varVariant);
for i:= 0 to FileStrings.Count-1 do
  begin
    V[i] := FileStrings[i] + chr(13) + chr(10);
  end;
while (Form1.Browser.ReadyState < READYSTATE_COMPLETE) do
  begin
    sleep(300);
    Application.ProcessMessages;
  end;
Document.Write(PSafeArray(TVarData(v).VArray));
Document.Close;
end;


 
Piter ©   (2005-03-25 16:59) [6]

Piter ©   (23.03.05 22:13) [4]
Сначала надо сделать Navigate("about:blank"), потом цикл ожидания



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

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

Наверх




Память: 0.48 MB
Время: 0.037 c
4-1114091329
ChtoMe
2005-04-21 17:48
2005.06.14
Функции SeTimer, KillTimer


1-1117050450
Борыч
2005-05-25 23:47
2005.06.14
Создание MDI-Child окна в режиме Visible=false (реанимация)


14-1116875567
тихий вовочка
2005-05-23 23:12
2005.06.14
Новое государство :)))


9-1110978904
VolanD666
2005-03-16 16:15
2005.06.14
Текстуры в Direct3D


4-1113797567
Zakus
2005-04-18 08:12
2005.06.14
иконка в SysTray.. реакция на события / подсказка в стиле WinXP