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

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

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

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 26.07.2015, 14:33   #1
Shouldercannon
Участник клуба Подтвердите свой е-майл
 
Аватар для Shouldercannon
 
Регистрация: 26.01.2008
Сообщений: 1,897
Вопрос Проверка TWebBrowser на пустоту

Доброго времени суток!
Можно ли проверить TWebBrowser на пустоту?
При обращении к функции
Код:
function WB_GetHTMLCode(WebBrowser: TWebBrowser): String;
var
  PS: IPersistStreamInit;
  SS: TStringStream;
  SA: IStream;
  s: String;
begin
  PS := WebBrowser.Document as IPersistStreamInit;
  s := '';
  try
    SS := TStringStream.Create(s);
    SA := TStreamAdapter.Create(SS, soReference) as IStream;
    try
      PS.Save(SA, False);
      Result := SS.Datastring;
    except
    end;
  finally
    FreeAndNil(SS);
  end;
end;
при ещё не загруженной странице нарываюсь на
Изображения
Тип файла: png twebbrowser.png (20.1 Кб, 60 просмотров)
Shouldercannon вне форума Ответить с цитированием
Старый 26.07.2015, 16:47   #2
JUDAS
фонатик DELPHI
Форумчанин
 
Аватар для JUDAS
 
Регистрация: 14.01.2008
Сообщений: 714
По умолчанию

Автор, а чё там проверять
Взял твой код , дописал if Assigned(PS) then и далее всю твою начинку try finally
Всё работает
Изображения
Тип файла: jpg 3333.jpg (27.5 Кб, 123 просмотров)
95% сбоев и ошибок приложений, находится в полу метрах от монитора

Последний раз редактировалось JUDAS; 26.07.2015 в 16:50.
JUDAS вне форума Ответить с цитированием
Старый 26.07.2015, 17:53   #3
Stilet
Белик Виталий :)
Старожил
 
Аватар для Stilet
 
Регистрация: 23.07.2007
Сообщений: 57,097
По умолчанию

Цитата:
при ещё не загруженной странице нарываюсь на
По идее, если запуск будет вне Делфи такого сообщения при try не будет. Однако тебе правильно намекнули - IF гораздо полезнее try в твоем случае.
Цитата:
Можно ли проверить TWebBrowser на пустоту?
В каком смысле пустоту? Отсутствие на странице контента?
I'm learning to live...
Stilet вне форума Ответить с цитированием
Старый 26.07.2015, 17:56   #4
Shouldercannon
Участник клуба Подтвердите свой е-майл
 
Аватар для Shouldercannon
 
Регистрация: 26.01.2008
Сообщений: 1,897
По умолчанию

Цитата:
Сообщение от Stilet Посмотреть сообщение
В каком смысле пустоту? Отсутствие на странице контента?
Оно самое..
Shouldercannon вне форума Ответить с цитированием
Старый 26.07.2015, 18:14   #5
xxbesoxx
Участник клуба
 
Регистрация: 10.08.2010
Сообщений: 1,389
По умолчанию

Я свами не спорю .! Но интересно , Что это функция делаеть ? А зачем вы его копировали от суда http://delphiworld.narod.ru/download...html_code.html
Я магу написать так .
Код:
procedure TForm1.Button2Click(Sender: TObject);
begin
 if Edit1.Text<>'' then
 begin
   WebBrowser1.Navigate (Trim(Edit1.Text)) ;
 end;
end;

Последний раз редактировалось xxbesoxx; 26.07.2015 в 18:19.
xxbesoxx вне форума Ответить с цитированием
Старый 26.07.2015, 18:23   #6
JUDAS
фонатик DELPHI
Форумчанин
 
Аватар для JUDAS
 
Регистрация: 14.01.2008
Сообщений: 714
По умолчанию

Цитата:
if Edit1.Text<>'' then
begin
WebBrowser1.Navigate (Trim(Edit1.Text)) ;
end;
Проверил работу кода с Edit1.Text = 'http://google.ru';
Начинка в WebBrowser1 появляется через 2-3 секунды, а до этого, даже с URL в середине вот это
Код:
WebBrowser.Document as IPersistStreamInit;
даёт nil

Видимо автор хочет написать на базе примера функцию ожидания загрузки страницы. =)
-------------
Автор, если нужно узнать когда страница загрузилась, вот код:

Код:
procedure TForm1.Button1Click(Sender: TObject);
begin
  WebBrowser1.Navigate('http://programmersforum.ru/showthread.php?t=280880');
end;
// Sender - TWebBrowser  pDisp-указатель на dispatch загруженого документа 
procedure TForm1.WebBrowser1DocumentComplete(Sender: TObject;
  const pDisp: IDispatch; var URL: OleVariant);
begin
  Caption := 'ЗАГРУЖЕНА!';
end;
точнее вот так

Код:
 // если страница загружена успешно
procedure TForm1.WebBrowser1DocumentComplete(Sender: TObject;
  const pDisp: IDispatch; var URL: OleVariant);
var
  PS: IPersistStreamInit;
  SS: TStringStream;
  SA: IStream;
  s: String;
begin
  // начинаем в ней ковырять говно
  PS := TWebBrowser(Sender).Document as IPersistStreamInit;
  if Assigned(PS) then
  try
    s := '';
    SS := TStringStream.Create(s);
    SA := TStreamAdapter.Create(SS, soReference) as IStream;
    try
      PS.Save(SA, False);
     // Result := SS.Datastring;
    except
    end;
  finally
    FreeAndNil(SS);
  end;
end;
95% сбоев и ошибок приложений, находится в полу метрах от монитора

Последний раз редактировалось JUDAS; 26.07.2015 в 18:31.
JUDAS вне форума Ответить с цитированием
Старый 26.07.2015, 18:27   #7
xxbesoxx
Участник клуба
 
Регистрация: 10.08.2010
Сообщений: 1,389
По умолчанию

Цитата:
JUDAS появляется через 2-3 секунды,
Не какой отличия нету ! Это функция просто хлам он нечего там не ускоряет его надо удалить . Не надо все копировать из интернета . Надо просто подумать и паписать так что байло проще и понятно

Последний раз редактировалось xxbesoxx; 26.07.2015 в 18:31.
xxbesoxx вне форума Ответить с цитированием
Старый 26.07.2015, 18:33   #8
JUDAS
фонатик DELPHI
Форумчанин
 
Аватар для JUDAS
 
Регистрация: 14.01.2008
Сообщений: 714
По умолчанию

Цитата:
Сообщение от xxbesoxx Посмотреть сообщение
Не какой отличия нету ! Это функция просто хлам он нечего там не ускоряет его надо удалить . Не надо все копировать из интернета . Надо просто подумать и паписать так что байло проще и понятно
Автору темы в личке расскажи Я ответил ему на вопрос почему вылетает его код.

Цитата:
Это функция просто хлам он нечего там не ускоряет его надо удалить .
Вообще то судя по коду, автор не ускорят ничего, он хочет считать страницу к себе в память или в файл.
95% сбоев и ошибок приложений, находится в полу метрах от монитора

Последний раз редактировалось Stilet; 26.07.2015 в 19:23.
JUDAS вне форума Ответить с цитированием
Старый 26.07.2015, 19:02   #9
Shouldercannon
Участник клуба Подтвердите свой е-майл
 
Аватар для Shouldercannon
 
Регистрация: 26.01.2008
Сообщений: 1,897
По умолчанию

Цитата:
Сообщение от JUDAS Посмотреть сообщение
Вообще то судя по коду, автор не ускорят ничего, он хочет считать страницу к себе в память или в файл.
Ничего не ускоряю, просто получаю исходный код страницы.
Shouldercannon вне форума Ответить с цитированием
Старый 26.07.2015, 19:24   #10
Stilet
Белик Виталий :)
Старожил
 
Аватар для Stilet
 
Регистрация: 23.07.2007
Сообщений: 57,097
По умолчанию

Цитата:
Оно самое..
Ну кроме как получить указатель на Document.body и проверить его innerHTML я не знаю. Но вообще лучше никак не проверять, просто дождаться события окончания загрузки документа.
I'm learning to live...
Stilet вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Проверка поля на пустоту denis.ta-com Microsoft Office Access 8 03.01.2016 20:44
Проверка строки на пустоту Стремящийся JavaScript, Ajax 2 12.05.2012 12:10
Проверка множества Memo на пустоту flouwjke Помощь студентам 3 29.04.2012 20:56
Проверка RichViewEdit на пустоту Shouldercannon Общие вопросы Delphi 2 22.05.2010 02:58
проверка файла на пустоту vitaliy1911 Общие вопросы Delphi 7 19.05.2010 22:16