|
|
导航: |
论坛 -> 移动应用开发
斑竹:flyers,iamdream |
|
作者: |
|
2005/2/3 16:52:02 |
标题: |
delphi8真麻烦,与Win32一样的东西居然总出错 |
浏览:1682 |
|
加入我的收藏 |
楼主: |
我在Delphi中定义了自己的类,如下: TSystem = class (TObject) ...... end; 然后在程序中声明并使用, System: TSystem; List:TList; ...... System:=TSystem.Create; List:=TList.Create; ...... List.Add(System); ...... System:=List.Items[i]; ...... 结果在Delphi2005 for Win32下编译运行时一切正常,但同样的代码在Delphi8 下 编译时出现错误: Incompatible types: 'TSystem' and 'Object'。不知这又是 Delphi8在什么地方做了“改进”,还望各位高手之点一二,先行谢过!
----------------------------------------------
- |
作者: |
alexou (枫☆I believe I can fly~~~) |
★☆☆☆☆ |
-
|
盒子活跃会员 |
|
2005/2/3 18:06:30 |
1楼: |
很正常,没有任何问题。在批评他人的同时,请先检讨自己的知识水平。
TList.Items的返回值是Pointer,存储物件为对象时,返回值为TObject类型的对象引用。
在Object Pascal这种强类型语言中,你可以自由的将子类实例传递给声明为父类的对象引用,反之则不行,必须调用强类型转换,即: system := TList.Items[i] as TSystem。
最后不要用system作为对象标识符,这会和Delphi基础单元system.pas造成冲突。
----------------------------------------------
-
|
作者: |
|
2005/2/4 8:26:38 |
2楼: |
非常感谢1楼的批评与点拨。因为在Win32下并没有这么严格的要求,因此一直比较懒,都是直接用的,所以才在Delphi8中遇到了许多也许不算是问题的问题,还望多多帮助,谢谢!
----------------------------------------------
-
|
作者: |
|
2005/2/6 23:04:23 |
3楼: |
其实
在微软的公共语言运行库中说明,Object他是一个类,是一个System.Object的类。
他是所有类的父类。正如1楼所说,父类的对象可以引用子类的,这是安全的。
object form = new Form();
这是允许的。但是反过来就不行了:
Form form = new System.Object。
而且这种关系必须建立在继承的关系下才可以完成。切记~~~
而且,Object是.Net类库的父类,不包括原来Delphi版本单元的父类。
我好像有点画蛇添足,呵呵,前面那位大哥的话我差不多重复了一遍……嘻嘻
----------------------------------------------
大家好,我是Flyers。
是Delphi.Net版主,小弟会尽力解决大家的问题!谢谢支持!
|
|