DELPHI盒子
!实时搜索: 盒子论坛 | 注册用户 | 修改信息 | 退出
检举帖 | 全文检索 | 关闭广告 | 捐赠
技术论坛
 用户名
 密  码
自动登陆(30天有效)
忘了密码
≡技术区≡
DELPHI技术
lazarus/fpc/Free Pascal
移动应用开发
Web应用开发
数据库专区
报表专区
网络通讯
开源项目
论坛精华贴
≡发布区≡
发布代码
发布控件
文档资料
经典工具
≡事务区≡
网站意见
盒子之家
招聘应聘
信息交换
论坛信息
最新加入: hfh9801
今日帖子: 0
在线用户: 0
导航: 论坛 -> 移动应用开发 斑竹:flyers,iamdream  
作者:
男 liuwei7 (无知者无畏) ★☆☆☆☆ -
普通会员
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造成冲突。
----------------------------------------------
-
作者:
男 liuwei7 (无知者无畏) ★☆☆☆☆ -
普通会员
2005/2/4 8:26:38
2楼: 非常感谢1楼的批评与点拨。因为在Win32下并没有这么严格的要求,因此一直比较懒,都是直接用的,所以才在Delphi8中遇到了许多也许不算是问题的问题,还望多多帮助,谢谢!
----------------------------------------------
-
作者:
男 flyers (flyers) ★☆☆☆☆ -
普通会员
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版主,小弟会尽力解决大家的问题!谢谢支持!
信息
登陆以后才能回复
Copyright © 2CCC.Com 盒子论坛 v3.0.1 版权所有 页面执行388.6719毫秒 RSS