在程序中,有这样的操作:一个unitA中定义另一个unitB的变量,在unitB中通过
unitA.ExunitB := self;的方式初始化。在一系列的操作后,有的时候会出现
“invalid pointer”的错误。(在程序中这种指针很多。可能会在unitA里面创建n多的unitB,在unitC中对unitB中的数据进行处理,又要定义 unitC.ExunitB :=self;}而且这种错误很随机,我想找的时候,找不到。冷不丁又出来了 。请教问题:
1:一般这种关系最好处理方法是什么?
2:这种冷不丁出来的错误,我该怎样捕捉到,可以进行跟踪处理?谢谢各位的帮忙。
分不是问题,只要有解决办法。
unitA.ExunitB := self;的方式初始化。在一系列的操作后,有的时候会出现
“invalid pointer”的错误。(在程序中这种指针很多。可能会在unitA里面创建n多的unitB,在unitC中对unitB中的数据进行处理,又要定义 unitC.ExunitB :=self;}而且这种错误很随机,我想找的时候,找不到。冷不丁又出来了 。请教问题:
1:一般这种关系最好处理方法是什么?
2:这种冷不丁出来的错误,我该怎样捕捉到,可以进行跟踪处理?谢谢各位的帮忙。
分不是问题,只要有解决办法。
那出现的错误应是你违规用了指针,否则不会有错的
保持一个那里申请那里释放的原则,
入口前检查参数完整性。
跨单元引用时,尤其重要,
我宁愿在UnitB中,提供访问xxx数据的接口函数,也比让UnitA直接访问甚至释放UnitB中的数据强很多倍。
尽量不要使用全局变量,如果必须,那么使用函数来统一访问该变量,尤其是指针变量。
同时接受批评。
这个问题到现在一直没有解决,程序写到现在,没有好的思路,我还不想重组结构。
不过是要好好整理程序了。to FrameSniper(§绕瀑游龙§) :
希望你不是笑话我,连描述也描述不清楚。
:) unitB中定义unitA的类型的指针 pUnitAinUnitB。通过通过该指针在unitB中操作UnitA的一系列过程和变量。于是就出现了在unitB中出现的“invalid pointer”的错误。
希望你会有什么高见。 谢谢
通过UnitA要动态创建N多个UnitB的对象LIST
其实主要想应用UnitA来管理上述N多个UnitB个对象。UnitB :基于Frame的Unit。
除了本Frame的功能实现,还要从UnitA中获得LIST的环境控制变量值
于是UnitA创建每一个UnitB时,定义了UnitB.EeunitA := self;的指针操作 UnitC:基于Frame的Unit。
其主要是UnitB中的功能实现调用的frame。但是在UnitC的操作中也要对UnitB的数据进行操作
于是在UnitB的功能实现时又定义了UnitC.ExunitB := Self; 上述就是我想要做的事情,和现在所采取的方法,在处理中会出现
------------------------Project ProjectA.exe Raised exception class EInvalidPointer with Message “Invalid pointer operation “.Process Stopped ,Use step or run to continue. 上述就是出现的错误。
出现错误是不可控制的,有的时候有,有的时候每有(也有可能是有时触发了某个函数,有时没有)。 希望可以得到大家的帮助。
通过UnitA要动态创建N多个UnitB的对象LIST
其实主要想应用UnitA来管理上述N多个UnitB个对象。UnitB :基于Frame的Unit。
除了本Frame的功能实现,还要从UnitA中获得LIST的环境控制变量值
于是UnitA创建每一个UnitB时,定义了UnitB.EeunitA := self;的指针操作 UnitC:基于Frame的Unit。
其主要是UnitB中的功能实现调用的frame。但是在UnitC的操作中也要对UnitB的数据进行操作
于是在UnitB的功能实现时又定义了UnitC.ExunitB := Self; 上述就是我想要做的事情,和现在所采取的方法,在处理中会出现
------------------------Project ProjectA.exe Raised exception class EInvalidPointer with Message “Invalid pointer operation “.Process Stopped ,Use step or run to continue. 上述就是出现的错误。
出现错误是不可控制的,有的时候有,有的时候每有(也有可能是有时触发了某个函数,有时没有)。 希望可以得到大家的帮助。