单就DELPHI编译器而言,我简单总结了下从D7到D2010以来的一些新的东西
1、 Unicode String 支持,这恐怕是最大的改变;
2、 新的RTTI机制,试用了一下,确实比以前那个好太多了;
3、 泛型(Generics),delphi也可以使用泛型类了,意味着对模板型编程的支持,一大进步;
4、 匿名方法,可以给方法型变量更方便的操作了;
5、 Is和as操作符的增强,以及接口和类之间的相互转换
6、 加入了几条新的编译指令和编译器警告,具体没有去注意我暂时就发现这么一些值得留意的东西,希望有高手出招,给DELPHI做些系统的说明。
另外,用了DELPHI的接口,不知道是方法不对还是DELPHI本身的问题,感觉DELPHI的接口机制挺别扭,哎呀,有用过的朋友能给些好的建议吗?

解决方案 »

  1.   

    5、 Is和as操作符的增强,以及接口和类之间的相互转换
    ------------------------------------------------------现在接口可以直接转类了?其它转化之前一直都可以的。
      

  2.   

    DELPHI/PASCAL怎么没有成为一个平台呢,像JAVA一样,可惜了
      

  3.   

    既然是delphi,一定要顶下,鉴于delphi7的第三方资源更充沛,依然用它....在这世上,有什么能和delphi的简洁,快速,深刻相比呢?可惜啊....
      

  4.   

    很久没玩delphi了。真的好怀念
      

  5.   

    YES
    它的思路比较巧妙:
    function TObject.GetInterface(const IID: TGUID; out Obj): Boolean;
    如果Guid是否为一个常量,则将Self指针赋值给Obj。
      

  6.   

    Delphi的变化还是很大的,主要有几方面:
    1. 语言特性
    * Enhanced Record (record可以包含方法和属性了)
    * Generics
    * Anonymous Methods
    * Reflection(Delphi引入了一套比较完整的反射类库)
    * Attributes(所有类型、成员、参数均可以自定义属性,和.net类似)
    * abstract/sealed keyword, class var/property
    2. RTL (UnicodeString, TStringBuilder, TTextReader/TTextWriter, TMonitor, TFile/TDirectory/TPath, TStopwatch, etc.)
    3. VCL (新的控件和属性)
    4. IDE (Region, Search)
    5. 触摸技术 (Windows-7 independent)
    6. 其他 (Datasnap, etc)
      

  7.   

    呵呵,你再想想看,实际上TObject(intf)相当于调用:
    intf.QueryInterface(ObjCastGuid, obj)
    由于QueryInterface的一般实现是调用TObject.GetInterface,所以会返回该对象的引用。
      

  8.   

    不对吧,强转类型是不会调用任何东西的。QueryInterface是使用as的时候才会被调用的,你看DELPHI以前一些老的框架就知道,很多工厂出来都要特意as一下(不能强转),原因就是这些类在QueryInterface里面做了手脚,必须通过as来调用它。另外Intf.QueryInterface(IntfGUID, obj),obj返回的是符合IntfGUID的接口实例,而不是对象实例(我不知道怎么解释这两者的区别),虽然它的名称叫“obj”。以下代码说明问题:type
      ia = interface(IInterface)
        ['{AF123526-149E-48F5-A3EF-C07EDA4DC025}']
      end;  ta = class(TInterfacedObject, ia);procedure TForm1.FormCreate(Sender: TObject);
    var
      a: ia;
      ao: ta;
    begin
      a := ta.Create;
      a.QueryInterface(ia, ao);
      ShowMessage(ao.ClassName);    //会报错的
    end;
      

  9.   

    我是BCB选手没有用过delphi,不过Unicode到是一个不小的改变。控件也可查询了,很不错
      

  10.   

    你写的示例代码当然是错误的,因为接口的内存布局。在以前是不能直接使用TObject(Intf)的,而现在编译器则会自动调用System._SafeIntfAsClass方法,其效果等同于obj := Intf as TObject。(这种语法以前是不支持的。)它会调用Intf.QueryInterface(ObjCastGUID, obj)方法。而一般的QueryInterface是调用本对象的GetInterface方法来判断的,所以就变成:
    GetInterface(ObjCastGUID, obj)
    而此时因为传入的是ObjCastGUID,GetInterface会自动将Self赋值给obj,所以就完成了接口实例到对象实例的转换。具体可以看下面的代码:
    [code=(Object Pascal)]
    function TObject.GetInterface(const IID: TGUID; out Obj): Boolean;
    var
      InterfaceEntry: PInterfaceEntry;
    begin
      Pointer(Obj) := nil;
      InterfaceEntry := GetInterfaceEntry(IID);
      if InterfaceEntry <> nil then
      begin
        if InterfaceEntry^.IOffset <> 0 then
        begin
          Pointer(Obj) := Pointer(Integer(Self) + InterfaceEntry^.IOffset);
          if Pointer(Obj) <> nil then IInterface(Obj)._AddRef;
        end
        else
          IInterface(Obj) := InvokeImplGetter(Self, InterfaceEntry^.ImplGetter);
      end else if (Int64(ObjCastGUID.D1) = Int64(IID.D1)) and
       (Int64(ObjCastGUID.D4) = Int64(IID.D4)) then
        Pointer(Obj) := Self;    
      Result := Pointer(Obj) <> nil;
    end;
    [/code]
      

  11.   

    Delphi原来还有这么多人在开发
    我以为成了古董了呢
    孤陋寡闻··············
      

  12.   


    delphi 都不像 delphi了 吧
      

  13.   

    不错,现在在用delphi开发,呵呵
      

  14.   

    对于敏捷开发的观点就是 对于团队个体实力以及整体实力的要求都很高,CMMI都没走顺溜的还真别想搞什么敏捷。还是得先把CMMI多弄几年~ 然后才有敏捷的基础~
      

  15.   

    开发一个项目,天天看别人写的Delphi代码,累的不行,好多东西都封装起来,郁闷~!
      

  16.   

    delphi曾经是开发工具世界的极品,希望她不要落伍。
      

  17.   

    基本上都是用D7,后面.net化了。如果要用还不如直接用vs.net
      

  18.   

    还有人用Delphi啊,现在不是都用c#和Java嘛
      

  19.   

    怀念Delphi谁来解释一下:为什么国内外软件公司用Delphi做开发的比较少呢?
    据了解,目前国内还有很多公司用VB 6.0 作为开发工具,难道Delphi还不如VB ?
      

  20.   

    大家说说 delphi 还能有几年的饭碗吃?
      

  21.   

    感觉大型的软件还是用C或C++的多吧,再加上 .net系倚在MS这棵大树上,目前来看,DELPHI的前景有点暗淡。
      

  22.   

    大家说说 delphi 还能有几年的饭碗吃?
    这个问题问的好啊
    我现在想转java,但是发现从头来java工资太低了啊,竞争又激烈
    也没什么意思啊
    真不是道路怎么走啊,
    熬几年不做开发算了
      

  23.   

    呵呵  还是DELPHI7用的多