Delphi2005学习笔记1
2008-04-09 04:22:35来源:互联网 阅读 ()
Delphi2005的新特性就不提了,网上到处都是,这些新特性比如:重构还是蛮不错的。
但是:真是不明白,Together是borland自己的东西,却非要不支持Delphi,即使支持还是整合到delphi2005里面,还去掉了很多功能。第二点就是网上说什么UML图可以直接生成代码,我倒是使用了从代码直接生成图,但是怎么都没搞出来从图到代码,不过我没有使用ECO,不知道是不是这个原因,但是Delphi2005不是说不用ECO也可以得么,真是不明白怎么回事。最后一点就是也许Borland编译器水平比较高,但是代码编辑器做得和Vs2005相比是有比较大的距离,在VS2005里面,我只要打一个字母就会自动显示出全部符合的代码提示,包括关键字都可以,并且速度极快,瞬间就出来,在d2005里面非要我再按个ctrl 空格,才会出来,而且第一次使用代码提示的话,出来之前还要等硬盘狂转一会。不过公平的讲,vs使用的提示是根据代码直接出来,d的还经过了以语法分析,我怀疑里面说不定还要预先编译一下前面的,这样更加精确,但是机器不好就实在叫人受不了,而且如果前面代码有错误,往往不能提示。说到代码的自动缩进,这点borland真是比不了,VS可以自动缩进2个空格或其他的格式也会自动判断,但是Delphi2005就还是不行,真是没办法。最后一点不满意就是在VS里面直接打3个\\\会自动生成注释模板,但是Delphi就没提供相应的功能,这样注释起来真是不容易啊。
言归正传,Delphi for .net为了适应.net的一些要求,做了一些语法调整,但是相关的书籍却很少,帮助也写得不行,像这样下去即使编译器获得成功,但是没人知道怎么写.net的delph程序,也是白搭,真不知道delphi.net的好书什么时候才能出来。现在既然有了delphi2005,已经等不及了,只要自己不断摸索了。
今天自己先看看帮助,学习一下namespace
namespace
声明名称空间
在delphi的工程文件中,隐含声明了一个namespace,被称作工程默认名称空间。假设工程文件头定义如下:
Program MyCompany.Programs.MyProgram;(library package等关键字的头一样)
则工程的默认名称空间是MyCompany.Programs
如果一个Unit的头定义成Unit ****;则相当于写成Unit MyCompany.Programs.****
如果一个Unit的头定义成Unit ***.****.***;则相当于声明了一个名称空间***.****
按第一种方式声明的Unit被称作generic unit,它总是工程默认名称空间的子空间
名称空间命名不区分大小写。也就是说,用.分割的几段单词中,最后一部分是不算作名称是不编译进assembly中的,比如Unit AAA.BB.Unit3这种写法,仅仅声明了一个名称空间AAA.BB,Unit3可以看作是不同的文件名称的区分,对外界来说是看不到的,当然在Delphi内,还是对他们区分成两个不同的部分。利用这个特性,如果一个大的Namespace需要分成几个文件来编写,则可以让这些Unit的全面部分全部一样,仅在最后一个.的这一节不同,就行了。
名称空间的引用
使用Uses语句。假设有如下语句:
uses aaa.bbb.unit1,unit2;
对于aaa.bbb.unit1已经明确指明,对于Unit2编译器会按照下面三个顺序来搜所名称空间Unit2
1 The current unit namespace (if any)
2 The project default namespace (if any)
3 Namespaces specified by compiler options
虽然对于外部编译器来讲,Unit名称的最后一节是看不到的也是不可区分的,但是在Delphi中,最后一节仍然是不可少的,所以uses语句中,需要包含最后一节,比如在Unit1 AAA.BB.Unit1中定义了Class1,在Unit AAA.BB.Unit2中要使用Class1就必须需在uses中引用全名uses AAA.BB.Unit1或者如果工程的默认名称空间是AAA.BB,也可以直接uses Unit1,不管怎么样,uses中Unit1是必不可少的。
在Delphi的帮助中这样写道:
Multiple units can be grouped together into one namespace using an extension of the in clause in the project source file. The file name string can list multiple unit source files in a semicolon-delimited list.
uses MyProgram.MyNamespace in ''''filepath/unit1.pas;otherpath/unit2.pas'''';
In this example, the namespace MyProgram.MyNamespace logically contains all the interface symbols from unit1 and unit2. Symbol names in a namespace must be unique, across all units in the namespace. In the example above, if unit1 and unit2 both define a global interface symbol named mySymbol, the compiler will report an error in the uses clause.
标签:
版权申明:本站文章部分自网络,如有侵权,请联系:west999com@outlook.com
但是不管我怎样试验,重视编译错误,无法实现。
到目前为止,我还没有找到如何引用delphi生成的dll的方法。因为我一在delphi新的工程中添加一个(用Add reference菜单)delphi for .net编译的dll,然后编译,就会说致命错误,不能导入什么什么东西,请使用包,之类的。但是在VS.net中添加着dll却没有任何问题,程序也能正常运行。
到目前为止只找到一个暂时的解决方案,就是不生成library,用package代替,这样最终目标文件也是dll,而且我在VS中也能正常调用。
特别注意:本站所有转载文章言论不代表本站观点,本站所提供的摄影照片,插画,设计作品,如需使用,请与原作者联系,版权归原作者所有
上一篇: 多层数据库开发四:BDE会话期
IDC资讯: 主机资讯 注册资讯 托管资讯 vps资讯 网站建设
网站运营: 建站经验 策划盈利 搜索优化 网站推广 免费资源
网络编程: Asp.Net编程 Asp编程 Php编程 Xml编程 Access Mssql Mysql 其它
服务器技术: Web服务器 Ftp服务器 Mail服务器 Dns服务器 安全防护
软件技巧: 其它软件 Word Excel Powerpoint Ghost Vista QQ空间 QQ FlashGet 迅雷
网页制作: FrontPages Dreamweaver Javascript css photoshop fireworks Flash