当前位置:首页>>网络编程>>Delphi教程>>正文

Delphi2005学习笔记1

文章出处:网络转载 作者:未知 发布时间:2006-07-28 收藏到QQ书签
终于由Delphi2005试用了,前两天体验了一下IDE的一些新功能,还算不错,就是速度稍微有一点慢,关键是我的实验室的机器也不好,只有256M,宿舍的要好一些512M,用起来就流畅多了,不过启动速度还是不如VS2005快。说到稳定性,比D8强多了,但是还是听到有人说bug比较多,用到现在我还没有发现什么严重的bug,也许用得还不够深入吧,不过稳定性来说,还是可以让人接受了,虽然没有D7那样好的稳定性,但是我想至少达到D7稳定性的90%左右了。毕竟对Borland来说全部使用.net来开发编译器的时间也不长。
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
Google