Главная страница
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.034 c
14-1116353364
Vulko
2005-05-17 22:09
2005.06.14
Не соображу что не так при перегрузке оператора =...


4-1114420136
}|{yk
2005-04-25 13:08
2005.06.14
Как зарегистрировать файлы для открытия их определенной программо


1-1117194774
ctranik
2005-05-27 15:52
2005.06.14
проблемы с реестром, кто силён помогите, пожалуйсто


3-1115349628
SergP
2005-05-06 07:20
2005.06.14
Как работать с таблицами DBASE IV имеющими расширение не dbf?


6-1111736034
Илья
2005-03-25 10:33
2005.06.14
Передача файлов по сети