Ошибка приложения (EOleSysError)
Delphi 7. Есть такой код:
program Project2;
{$APPTYPE CONSOLE}
uses
Windows, Messages, SysUtils, Variants, Classes,
OleCtrls,ComObj,ActiveX, StdCtrls, SHDocVw ;
var
wb: TWebBrowser;
begin
wb := TWebBrowser.Create(nil);
wb.Navigate('http://site.ru/');
end.
После запуска (из под Delphi) вылетает такая ошибка: "Project Project2.exe raised exeption class EOleSysError with message 'Не был произведен вызов CoInitialize'. ...", если запускать из под винды, то просто "программа выполнила недопустимую ...". Писал еще такой код:
var
objIE: OleVariant;
i: integer;
strs: TStrings;
begin
try
objIE := CreateOLEObject('InternetExplorer.Application');
objIE.Visible := 0;
objIE.Navigate('http://site.ru/');
while objIE.Busy do
sleep(200);
strs := TStringList.Create;
strs.Clear;
for i := 0 to objIE.document.links.length - 1 do
strs.add(objIE.document.links.Item(i))
finally
objIE := unassigned;
end;
end;
но эффект тот же. Если писать данный код в обычно приложении (с "формой"), то все работает. Подскажите, как побороть??
1. Подключи модуль ActiveX
2. До создания объекта TWebBrowser (лучше в начале программы где-нибудь) вызови CoInitialize( Nil )
3. В конце программы, перед ее завершением, вызови CoUninitialize
Добавлю, что вызов CoInitialize происходит автоматически только в GUI приложении (в Application.Init). Т.к. у тебя консольное приложение, то нужно вызывать вручную, как подсказал Sagittarius
отлично! всем спасибо!