单就DELPHI编译器而言,我简单总结了下从D7到D2010以来的一些新的东西
1、 Unicode String 支持,这恐怕是最大的改变;
2、 新的RTTI机制,试用了一下,确实比以前那个好太多了;
3、 泛型(Generics),delphi也可以使用泛型类了,意味着对模板型编程的支持,一大进步;
4、 匿名方法,可以给方法型变量更方便的操作了;
5、 Is和as操作符的增强,以及接口和类之间的相互转换
6、 加入了几条新的编译指令和编译器警告,具体没有去注意我暂时就发现这么一些值得留意的东西,希望有高手出招,给DELPHI做些系统的说明。
另外,用了DELPHI的接口,不知道是方法不对还是DELPHI本身的问题,感觉DELPHI的接口机制挺别扭,哎呀,有用过的朋友能给些好的建议吗?
1、 Unicode String 支持,这恐怕是最大的改变;
2、 新的RTTI机制,试用了一下,确实比以前那个好太多了;
3、 泛型(Generics),delphi也可以使用泛型类了,意味着对模板型编程的支持,一大进步;
4、 匿名方法,可以给方法型变量更方便的操作了;
5、 Is和as操作符的增强,以及接口和类之间的相互转换
6、 加入了几条新的编译指令和编译器警告,具体没有去注意我暂时就发现这么一些值得留意的东西,希望有高手出招,给DELPHI做些系统的说明。
另外,用了DELPHI的接口,不知道是方法不对还是DELPHI本身的问题,感觉DELPHI的接口机制挺别扭,哎呀,有用过的朋友能给些好的建议吗?
解决方案 »
- Delphi Program 如何动态更新 WebService Function
- ***fastreport2.52/2.53的严重bug,请高手修改源代码****
- 数据表分离问题
- Delphi 6 + Crystal Reports 9运行时的错误,盼解!
- 关于mrpii里的原材料成品之间的成本核算问题
- 自做的文件复制函数,在复制大文件时进度条无法正常显示,像死机似的,有没有办法解决。
- 请问有那位高手知道怎么判断在程序中所在机器的操作系统是win98和win2000?
- 陈盈豪是谁??
- 一个简单的问题,请问怎样在用table1.createtable 时加入密码,请请!
- 初学者……一个搞不明白的问题
- 扩大交际圈,想和常年研究GIMP\CIMAGE\Paint.net \FreeImage\Devil\ImageMagick等人士交个朋友。
- OPENGL做的图像怎么保存为BMP格式图像?
------------------------------------------------------现在接口可以直接转类了?其它转化之前一直都可以的。
它的思路比较巧妙:
function TObject.GetInterface(const IID: TGUID; out Obj): Boolean;
如果Guid是否为一个常量,则将Self指针赋值给Obj。
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)
intf.QueryInterface(ObjCastGuid, obj)
由于QueryInterface的一般实现是调用TObject.GetInterface,所以会返回该对象的引用。
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;
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]
我以为成了古董了呢
孤陋寡闻··············
delphi 都不像 delphi了 吧
据了解,目前国内还有很多公司用VB 6.0 作为开发工具,难道Delphi还不如VB ?
这个问题问的好啊
我现在想转java,但是发现从头来java工资太低了啊,竞争又激烈
也没什么意思啊
真不是道路怎么走啊,
熬几年不做开发算了