读书人

EXE转DLL出现access violation at a

发布时间: 2012-02-23 22:01:34 作者: rapoo

EXE转DLL,出现access violation at address之类的错误
我现在有一个DELPHI做的EXE程序,有源代码。
为了将它转变为DLL,我新建了一个DLL,将EXE中的pas及res都加入到了这个DLL中,编译后这个DLL可以顺利调用,但是涉及到跨窗体调用时会出现access violation at address之类的错误,点击确定程序还是可以运行正常。
是这样的意思:
EXE程序中原本有两个窗体Form1和Form2,Form1中有这样的语句:Form2.a := ......
这句代码在exe程序中运行完全正常,但是到dll中总会报错,我试过如下的解决方案:
if not assigned(Form2) then
Form2 := TForm2.Create;
Form2.a := ......

这样之后就运行正常了,但是原来的Form1中还有这样的变量,
property ItemIndex: integer read FItemIndex write SetItemIndex;

程序中有涉及到调用这个ItemIndex时就会报错,请问这种情况要怎么处理?

本人表达能力不好,说了这么多不知道大家听懂我的问题没,如果有什么不明白的,请大家回复。在此先谢了!

[解决办法]
因为初始时Form2并没有被创建,所以访问时就会出错,
if not assigned(Form2) then
Form2 := TForm2.Create;
上面代码可以运行,就是因为判断form2不存在,然后创建了实例,才可以后续访问
[解决办法]
光从你这几句代码看不出问题,把别的代码贴出来。
[解决办法]
Form2是否创建又释放了,如果释放了,在后面加一句:Form2 := nil
[解决办法]
把ItemIndex改为别的名字,如MIndex试一下

读书人网 >.NET

热点推荐