修改TObject类遇到的小小问题~~~请教各位高手!! ( 积分: 100 )

  • 主题发起人 主题发起人 grabber
  • 开始时间 开始时间
G

grabber

Unregistered / Unconfirmed
GUEST, unregistred user!
有问题请教高手:
由于程序需要我需要修改System.pas中的TObject的定义,我在里面加了一个函数:Function Check:boolean;virtual;abstract;但是在继承的子类里我对它进行重定义时 TTest = class
function Test: boolean;override
end;
编译却提示在基类中找不到名字为check的函数!!!为什么!??!
 
有问题请教高手:
由于程序需要我需要修改System.pas中的TObject的定义,我在里面加了一个函数:Function Check:boolean;virtual;abstract;但是在继承的子类里我对它进行重定义时 TTest = class
function Test: boolean;override
end;
编译却提示在基类中找不到名字为check的函数!!!为什么!??!
 
你基类中的Check函数是加在哪个代码段中的?
如果是加在 private代码段中,子类是访问不到的
加到protected段中比较好一点
 
TTest = class(TObject)
 
无论加什么段都看不到的,这个system.pas需要重新编译才可以,但是偶现在还不知道怎么弄!!请知道重新编译系统单元类的高手作答,谢谢!!
 
TTest = class(TObject)
这个不是原因!!class默认就是继承TObject!
 
我觉得没必要这么麻烦去修改system.pas
你先创建一个新的类,例如叫TObjectx,全部继承TObject,然后在这个类中添加你要添加的虚方法。

接下去创建一个对象,从新建的TObjectx继承,这样不是更方便吗?
 
如果你不捆包编译,简单的办法,将System.pas拷贝到你的项目文件所在目录

不过,我真的很奇怪你这种作法
 
如果你不捆包编译,简单的办法,将System.pas拷贝到你的项目文件所在目录

不过,我真的很奇怪你这种作法
//////
拷贝修改好象没什么作用!!我试过还是不行!!Shuzi,你试过没?!
另外,偶有特殊的用途,所以要修改TObject!!!必须的!!!
 
在线等!!!
回答有价值的一律撒分!!!!!
欢迎高手讨论!!!
 
修改一下Tools菜单中的环境变量设置?
让Delphi编译的时候不去找现场的dcu,改成找Pas文件?
 
刚才试了一下,的确不行,估计是因为编译器自动引用System.pas,用不到自己目录下的单元。
不知你的特殊用途是什么,我以前是这样给原来的类加方法的:
type
TObject=class(System.TObject)
function Check:Boolean;
end

你参考一下
 
王东迪,你丫太过份了
 
来自:王东迪, 时间:2005-6-10 13:52:37, ID:3100175
傻比

做人不厚道!!!技术论坛不是骂街的!!!素质低的一边站!!!
 
别理他,咱们讨论自己的问题
 
刚才试了一下,的确不行,估计是因为编译器自动引用System.pas,用不到自己目录下的单元。
不知你的特殊用途是什么,我以前是这样给原来的类加方法的:
type
TObject=class(System.TObject)
function Check:Boolean;
end

你参考一下
/////////////////////////////////////////////////////////////////
按住Ctrl+鼠标可以跟进自己加入到项目的改写过的System.pas,所以编译器应该用到了。。。
对于你这个语法的含义不是很了解。。。。
按照你的写法是不是以后所有的继承自TObject的类就会自动继承check方法!?
 
对呀,只要后续的类引用了这个单元
我有好多类似的用法
 
都是笨蛋
 
http://www.delphibbs.com/delphibbs/dispq.asp?LID=403733
 
对呀,只要后续的类引用了这个单元
我有好多类似的用法
////////////////////////////////
是么?!
假如
type
TObject=class(System.TObject)
function Check:Boolean;
end

放在MyUnit.pas里;我们主程序的单元的Uses 加入MyUnit;然后我们定义类的时候用到
MyClass = class
//////
end;
你说MyClass是优先继承System.pas的TObject呢,还是优先继承MyUnit.pas的TObject呢!?!
 
后退
顶部