作flash封面时提示:尚未调用CoInitialize ( 积分: 100 )

  • 主题发起人 主题发起人 brochor
  • 开始时间 开始时间
B

brochor

Unregistered / Unconfirmed
GUEST, unregistred user!
主程序是这样的:
代码:
program flashstart;
uses
  Forms,
  Windows,
  Messages,
  SysUtils,
  Dialogs,
  comobj, ActiveX,
  ShockwaveFlashObjects_TLB,
  flashstart1 in 'flashstart1.pas' {Form1},
  flashstart2 in 'flashstart2.pas' {Form2};
{$R *.res}
begin
  Form2:=TForm2.Create(Application);
  Form2.Show;
  Form2.Update;
  Application.Initialize;
  Application.CreateForm(TForm1, Form1);
  Form2.Hide;
  Form2.Free;
  Application.Run;
end.
Form2就是封面,Form2中含有一个flash activex控件。
运行后就提示:
Project flashstart.exe raised exception class EOleSysError with message"尚未调用CoInitialize".Process stopped.Use Step or Run to continue.
用步进运行的话运行到 Form2:=TForm2.Create(Application);这句就提示同样的信息。

[red]请教高手,这个问题怎么解决啊?[?][?][/red]
 
begin
Application.Initialize;//这句放最上面
Form2:=TForm2.Create(Application);
Form2.Show;
Form2.Update;
Application.CreateForm(TForm1, Form1);
Form2.Hide;
Form2.Free;
Application.Run;
end.
 
楼上 正解
 
你可能是用到DLL调用数据模块,才会出现这个异常信息。
在你的单元里引入:
uses Activex;
procedure TDLLForm.FormCreate(Sender: TObject);
begin
CoInitialize(nil);
end;

procedure TDLLForm.FormClose(Sender: TObject;
var Action: TCloseAction);
begin
CoUninitialize;
end;
 
你的问题是需要在创建 Form2 前调用 CoInitialize(nil);
方法。
 
zqw0117的办法很好,可以运行通过。但是就不能起到封面的作用了,因为封面的显示在在application载入之后,其显示一闪就过了,没有起到在application载入的同时显示的作用。
另外,form2中的flash没有播放。
能不能有什么更好的解决办法啊?
 
CoInitialize(nil);
Form2:=TForm2.Create(Application);
Form2.Show;
Form2.Update;
Application.CreateForm(TForm1, Form1);
Form2.Hide;
Form2.Free;
Application.Run;
CoUninitialize;
记得uses activeX
 
satanmonkey的是正解
多人接受得分了。
 
后退
顶部