我用Delphi6做一个ActiveX控件,用向导生成,摆放了一个Mediaplayer,一个Button,一个OpenDialog,在按钮事件里填
procedure TMyTestX.Button1Click(Sender: TObject);
begin
if OpenDialog1.Execute then
begin
MediaPlayer1.FileName:= OpenDialog1.FileName;
MediaPlayer1.Open;
end;
end;
其它全部用缺省的代码。结果生成的OCX控件在我的机器上(winXP home)在Delphi和VC6中都能正常使用,但是把这个OCX拷到其他一台未装Delphi的Win2000机器上就不能用,在我的干净的虚拟机win98中也不能使用,显示:
DAX Error:Access violation at address 00963882 in module 'MYTEST.OCX'.
Read of address FFFFFFFF.当然控件在使用前都运行过regsvr32 MYTEST.OCX。这个现象在两三年前我用Delphi4 + Powerbuilder6.5时也发生过,Delphi4写的ActiveX控件就不能正常使用,提示虽不同,但也是异常终止。给人感觉Delphi的ActiveX技术不太通用。
procedure TMyTestX.Button1Click(Sender: TObject);
begin
if OpenDialog1.Execute then
begin
MediaPlayer1.FileName:= OpenDialog1.FileName;
MediaPlayer1.Open;
end;
end;
其它全部用缺省的代码。结果生成的OCX控件在我的机器上(winXP home)在Delphi和VC6中都能正常使用,但是把这个OCX拷到其他一台未装Delphi的Win2000机器上就不能用,在我的干净的虚拟机win98中也不能使用,显示:
DAX Error:Access violation at address 00963882 in module 'MYTEST.OCX'.
Read of address FFFFFFFF.当然控件在使用前都运行过regsvr32 MYTEST.OCX。这个现象在两三年前我用Delphi4 + Powerbuilder6.5时也发生过,Delphi4写的ActiveX控件就不能正常使用,提示虽不同,但也是异常终止。给人感觉Delphi的ActiveX技术不太通用。
DAX Error:Access violation at address 01203882 in module "MYTEST.OCX'.Read of address FFFFFFFF.
然后是非法操作的提示,然后是
Application Error:Exception EOleSysError in module PROJECT1.EXE at 000546BD.意外错误.如果我把测试程序PROJECT1中去掉该ActiveX的调用或者用等价的VCL控件来实现就能正常运行。请各位大侠再出出招。
没办法的办法(要不就别删了,就装一个dephi了),还有就是打成安装包,把dephi哪些运行库都装上去了,管它呢!
我使用delphi 5.0 给别的单位开发了一套三层的管理软件。
在同一个网段中,OCX组件没有问题,都可以,但在不同的网段中,就出现和你一样的错误。
首先要检查客户端有没有安装Mediaplayer,没有的话,你需要在你的发布配置中,添加附加文件。
但是,我的Delphi程序中的Mediaplayer不是微软的那个,而是Delphi的VCL组件。
其实我这里用MediaplayerVCL只是一个举例,即使我不用MediaplayerVCL也会有错误发生。
我上文中的“用等价的VCL控件来实现”是真正的源代码级的等价,并非是功能的类同。
所以我认为也不是缺少运行库的问题。
用D6开发的ocx,在网页中调用.在win98中打开网页时开始正常,但如果多次反复点开这个有ocx的页面时,就会报DAX错,与楼主的很相似.