Instance的问题?(100分)

  • 主题发起人 主题发起人 flai
  • 开始时间 开始时间
F

flai

Unregistered / Unconfirmed
GUEST, unregistred user!
我自己作了一个通用报表控件,如果在Form上只
放一个该控件,即只有一个Instance,一切都OK,
但,如果超过一个,就会出现莫名其妙的错误,
进行逐步调试,一切又OK,因此我总是无法
得到出错的原因,不知哪位有这方面的经验。

Thanks in advance!
 
这个,没见过
莫名其妙的错误是什么意思?
 
请问是设计期间还是运行期间?
 
是在Run time出现这种错误的!
 
错误的信息是什么?
 
根据我的猜想,你大概在interface区域中,Delphi替你自动生成的诸如
var
Form1:TForm1;
没有删除,所以导致上述错误。删调这句话,不要在使用Form1这个全局
变量,自己定义私有变量吧。
 
是否使用了一些全局或者2个控件都使用他的变量,引起冲突
 
Flai 的问题说得这么简略,怎么回答啊。
把你的控件的 Create、CreateWnd,单元文件中的 initialization、
Finalization 部分、以及公有变量定义部分(Interface)Copy 出来看一看
才能知道结果嘛。
From: BaKuBaKu.
 
是这样的,我定义变量如下
......
implementation
demoIni:TIniFile;
.....
出现的问题是:
执行控件的第一个instance都没问题,但是当执行第二个instance时,
发现变量demoini的值还是停留在执行第一个instance时的值...
后来,我在程序中用demoIni.savetofile(...)输出,发现demoIni
的内容又是正确的,但执行起来又不对!
(TIniFile.savetofile是我自己定义的,可以保证不会有错)

这究竟是为什么???
 
问题就是 demoIni:TIniFile;的定义。
demoIni 不是作为 class 的成员定义的,而是作为 Unit 的私有变量,
它只会在单元第一次被 Use 的时候创建,而不会在每创建一个 class 的
instance 的时候都创建一个新的 demoIni 的 instance。
不管创建了多少个 class 的 instance , demoIni 都只会有一个实例。
至于 “在程序中用demoIni.savetofile(...)输出,发现 demoIni 的内容
又是正确的”, 一定是程序另外的地方处理了,再检查一下程序吧。
From: BaKuBaKu.
 
接受答案了.
 
后退
顶部