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

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

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

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

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

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

Есть проект
Код:
program Project1;

uses
  Vcl.Forms,
  Unit1 in 'Unit1.pas' {Form1};

{$R *.res}

begin
  Application.Initialize;
  Application.MainFormOnTaskbar := True;
  Application.ShowMainForm := False; // Нужно обязательно
  Application.Title := 'Project';
  Application.CreateForm(TForm1, Form1);
  Application.Run;
end.

unit Unit1;
...
type
  TForm1 = class(TForm)
...
    procedure GetNews;
...
  private
    { Private declarations }
  public
    { Public declarations }
  end;

var
  Form1: TForm1;

implementation

{$R *.dfm}

procedure TForm1.FormCreate(Sender: TObject);
begin
  GetNews;
end;
// При закрытии формы (выход из программы) TWebBrowser начинает шалить
// При скрытой форме, если успеть до полной загрузки, то ошибки нет. После полной загрузки есть
// Если форма отображается, то в любом случае нет ошибки
procedure TForm1.GetNews;
var
  Flags: OleVariant;
begin
  Flags := 4; // Не загружать страницу из кэша
  WebBrowser1.Navigate('http://localhost/lanm/news.html', Flags);
//  WebBrowser1.Navigate('http://localhost/lanm/news.html'); // Тоже самое
end;

procedure TForm1.TrayIcon1Click(Sender: TObject);
begin
  Self.Show;
end;

procedure TForm1.N1Click(Sender: TObject);
begin
  Self.Close;
end;
Delphi указывает сюда
Код:
function TCustomForm.IsFormSizeStored: Boolean;
begin
  Result := AutoScroll or (HorzScrollBar.Range <> 0) or (VertScrollBar.Range <> 0); // Здесь остановка
end;
Изображения
Тип файла: png Error.png (4.7 Кб, 166 просмотров)
Shouldercannon вне форума Ответить с цитированием
Старый 22.05.2016, 14:16   #2
Аватар
Старожил
 
Аватар для Аватар
 
Регистрация: 17.11.2010
Сообщений: 18,922
По умолчанию

А из OnShow формы пробовал вызвать GetNews? В OnCreate Handle формы еще нет, может поэтому
Если бы архитекторы строили здания так, как программисты пишут программы, то первый залетевший дятел разрушил бы цивилизацию
Аватар вне форума Ответить с цитированием
Старый 22.05.2016, 14:28   #3
Shouldercannon
Участник клуба Подтвердите свой е-майл
 
Аватар для Shouldercannon
 
Регистрация: 26.01.2008
Сообщений: 1,897
По умолчанию

Цитата:
Сообщение от Аватар Посмотреть сообщение
А из OnShow формы пробовал вызвать GetNews? В OnCreate Handle формы еще нет, может поэтому
Помогло, но если вызвать GetNews через таймер (5 сек), то такая же беда. Итог одинаков, если что-то грузится в TWebBrowser на форме, которая скрыта, то при выходе получим сию ошибку

Пока такой вариант решения
Код:
procedure TForm1.GetNews;
var
  Flags: OleVariant;
begin
  if Self.Showing then
  begin
    Flags := 4; // Не загружать страницу из кэша
    WebBrowser1.Navigate('http://localhost/lanm/news.html', Flags);
  end;
end;

Последний раз редактировалось Shouldercannon; 22.05.2016 в 15:07.
Shouldercannon вне форума Ответить с цитированием
Старый 22.05.2016, 15:56   #4
Человек_Борща
Старожил
 
Аватар для Человек_Борща
 
Регистрация: 30.12.2009
Сообщений: 11,426
По умолчанию

В OnCreate лучше не пытаться работать с визуальными компонентами, их ещё не существует. От сюда и баги. Переместите вызов из Create в Show
Человек_Борща вне форума Ответить с цитированием
Старый 22.05.2016, 16:09   #5
Аватар
Старожил
 
Аватар для Аватар
 
Регистрация: 17.11.2010
Сообщений: 18,922
По умолчанию

Что значит не существуют? Все объекты создаются в конструкторе формы и только потом OnCtreate вызывается. Другое дело Handle формы. Любое обращение к нему в тот момент создает его, но возможны при этом не предсказуемые последствия
Если бы архитекторы строили здания так, как программисты пишут программы, то первый залетевший дятел разрушил бы цивилизацию
Аватар вне форума Ответить с цитированием
Старый 24.05.2016, 12:05   #6
Shouldercannon
Участник клуба Подтвердите свой е-майл
 
Аватар для Shouldercannon
 
Регистрация: 26.01.2008
Сообщений: 1,897
По умолчанию

Если Form1 сделать второй в проекте (добавить новую форму, а эту переименовать в Form2), то при таких же условиях испытания ошибок нет.
Shouldercannon вне форума Ответить с цитированием
Старый 26.05.2016, 16:56   #7
Shouldercannon
Участник клуба Подтвердите свой е-майл
 
Аватар для Shouldercannon
 
Регистрация: 26.01.2008
Сообщений: 1,897
По умолчанию

В Delphi 7 такого не наблюдается. Опять разрабы накрутили косяков
Shouldercannon вне форума Ответить с цитированием
Старый 27.05.2016, 01:41   #8
northener
ПШП
Участник клуба
 
Регистрация: 15.07.2013
Сообщений: 1,869
По умолчанию

Цитата:
Сообщение от Shouldercannon Посмотреть сообщение
В Delphi 7 такого не наблюдается. Опять разрабы накрутили косяков
Какого такого? ТС не представлял свой проект на форум. А что ты там своё надумал к топику относится лишь отчасти.
northener вне форума Ответить с цитированием
Старый 27.05.2016, 12:18   #9
Shouldercannon
Участник клуба Подтвердите свой е-майл
 
Аватар для Shouldercannon
 
Регистрация: 26.01.2008
Сообщений: 1,897
По умолчанию

Не вопрос
Вложения
Тип файла: zip File.zip (56.2 Кб, 6 просмотров)
Shouldercannon вне форума Ответить с цитированием
Старый 29.05.2016, 00:56   #10
northener
ПШП
Участник клуба
 
Регистрация: 15.07.2013
Сообщений: 1,869
По умолчанию

Цитата:
Сообщение от Shouldercannon Посмотреть сообщение
Не вопрос
Извини. Не заметил, что ты и есть ТС.
northener вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Access Violation при работе с многомерными массивами hon Общие вопросы Delphi 2 01.06.2013 23:08
Access Violation при работе с объектом в процедуре Spymen Общие вопросы Delphi 2 11.06.2012 22:30
access violation при работе с ini файлами demiancz Общие вопросы Delphi 5 07.01.2012 15:51
Access violation при выполнении Bernarditto C++ Builder 5 04.11.2010 14:25
TWebBrowser, Просмотр кода, Access Violation 095 Общие вопросы Delphi 1 22.05.2010 20:15