|
|
总之,凭借Delphi 2005,开发人员既能继续改进Win32应用,又能先行采用.NET及ASP.NET,是一款值得使用的开发工具。这篇文章中我们就在Delphi 2005 开发环境中体验一下,Borland为我们提供的C# 开发功能。闲话少叙,还是赶快进入我们的C#体验之旅吧!
1、先打开Delphi 2005 开发环境。点击菜单中的“ file ” ,在显示的下拉菜单中选择“New” ,如下图所示:
![]() |
鼠标点击" new "会在右面会在右面出现一个下级菜单。如下图所示:
![]() |
我们在其中选择“ other ”,紧接着回弹出“ new Items ”对话框。如下图所示:
![]() |
我们在其中的左边选择“ c # Projects ”,并在右面,选择“ Console Application ”,点击“ ok ”按钮。会出现“ New Application ”对话框。在其中“ Name: ”中添加一个工程的名字,在" Location: "项中添加保存工程的位置。可以点击后面的“ ... ”按钮,在弹出的保存对话中,选择保存位置。如下图所示:
![]() |
在“ New Application ”对话框中点击" ok "按钮,进入Delphi 2005 的编程环境。
下图显示的是其中的项目窗口中的内容:
![]() |
因为我们在“ New Application ”对话框中没有改变工程的名称,使用了默认的" Project1 "所以在此显示为" Project1.exe " (我们在这里将工程命名为“ colcsharpip1” ,所以显示为“ colcsharpip1 ” )。“ AssemblyInfo.cs ”是与系统有关的文件, “ Class.cs ”则是我们要添加代码的地方。
2、默认的情况下,在编译器的正中间就应该显示编译器给我们添加的代码。如下所示:
| using System ; namespace Project1 { /// <summary> /// Summary description for Class . /// </summary> class Class { /// <summary> /// The main entry point for the application . /// </summary> [STAThread] static void Main ( string [ ] args ) { // // TODO : Add code to start application here // } } } |
说明:
(1)其中using System ,表示使用System库,就像用delphi 写.net程序中开头的
| uses System . Drawing , System . Collections , System . ComponentModel , System . Windows . Forms , System . Data ; |
功能是一样的。
(2)namespace Project1中的namespace 关键字表示一个名空间。
(3)class Class 表示建立一个名字为Class的类。
(4)static void Main ( string [ ] args )才是程序的入口函数。
3、下面我们建立自己的程序,在程序中我们要实现的功能是:再输入主机名字时,显示该主机的ip地址,并显示相关的信息,如ip地址协议簇,以及ip协议的版本。步骤如下:
(1)为了实现以上功能要在文件开头添加如下库的引用。代码如下:
| //添加所要用到的库文件。 using System . Net ; using System . Net . Sockets ; using System . Text . RegularExpressions ; |
(2)在static void Main ( string [ ] args ) { }中添加如下代码:
| //定义一个字符串型的变量,用来保存主机的名称。 string server = null ; // 定义了一个用户输入的规则。 // 用来检查用户的输入。 // 他只允许用户输入2 ~ 40个字符长度的字符串。 Regex rex = new Regex ( @ " ^ [ a – z A – Z ] \ w { 1 , 39 } $ " ) ; if ( args . Length < 1) //如果输入的字符长度小于1 。 { //如果没有主机名称被作为程序的参数输入, // 那么就一当前主机的名称作为默认的主机. server = Dns . GetHostName ( ) ; //使用Dns类的GetHostName方法得到主机名称,并保存在server变量中。 Console . WriteLine ( " Using current host : " + server ) ; //使用Console类的WriteLine方法,在控制面板中输出信息。 } else //如果输入的字符长度大于1 。 { server = args [ 0 ] ; //得到参数中的值,并保存在server变量中。 if ( ! ( rex . Match ( server ) ) . Success ) //如果输入的格式不对。 { Console . WriteLine ( " Input string format not allowed . " ) ; //显示提示信息。 return ; } // 设置显示所用的文字类型。 System . Text . ASCIIEncoding ASCII = new System . Text . ASCIIEncoding ( ) ; // 得到主机相关信息。 IPHostEntry heserver = Dns . Resolve ( server ) ; //列举主机地址列表 foreach (IPAddress curAdd in heserver . AddressList ) { // 显示主机所支持的地址协议簇类型. // 如果这个主机所支持的地址协议簇类型是IPv6 - enabled ,那么它的值为: InternNetworkV6 . // 如果这个主机所支持的地址协议簇类型也是IPv4 - enabled ,那么它的值为 InterNetwork. Console . WriteLine ( " AddressFamily : " + curAdd . AddressFamily . ToString ( ) ) ; // 显示IPV6 地址中的ScopeId 属性 . if ( curAdd . AddressFamily . ToString ( ) == ProtocolFamily . InterNetworkV6 . ToString ( ) ) Console . WriteLine ( " Scope Id : " + curAdd . ScopeId . ToString ( ) ) ; // 使用标准格式显示主机的IP地址. // 如果是IPv4格式将被显示为点分格式。 // 如果是IPv6格式将被现实为冒号分割的十六进制方式. Console . WriteLine ( " Address : " + curAdd . ToString ( ) ) ; // 按字节格式显示主机的IP地址。 Console . Write ( " AddressBytes : " ) ; Byte[] bytes = curAdd . GetAddressBytes ( ) ; for (int i = 0 ; i < bytes . Length ; i + + ) { Console . Write ( bytes [ i ] ) ; } Console . WriteLine ( " \ r \ n " ) ; } // 显示主机是否支持IPv4和IPv6。 Console . WriteLine ( " \ r \ n SupportsIPv4 : " + Socket . SupportsIPv4 ) ; Console . WriteLine ( " SupportsIPv6 : " + Socket . SupportsIPv6 ) ; if ( Socket . SupportsIPv6 ) //如果支持IPv6 { // 显示IPv6种侦听的地址。 Console . WriteLine ( " \ r \ n IPv6Any : " + IPAddress . IPv6Any . ToString ( ) ) ; // 显示主机的回送地址. Console . WriteLine ( " IPv6Loopback : " + IPAddress . IPv6Loopback . ToString ( ) ) ; Console . WriteLine ( " IsLoopback ( IPv6Loopback ) : " + IPAddress . IsLoopback ( IPAddress . IPv6Loopback ) ) ; } //显示IPv4主机的回送地址。 Console . WriteLine ( " IsLoopback ( Loopback ) : " + IPAddress . IsLoopback ( IPAddress . Loopback ) ) ; //输入任意键程序继续 Console . Read ( ) ; } |
显示结果如下图所示:
![]() |
4、体会:
总体感觉,Delphi 2005 中的提供了多种语言编写程序的平台,但C#编译的速度还比较快,不想再C++ Builder中的两种语言所产生的编译速度超慢的现象。可见,Borland工程师对于编译速度还是用心了,不过就是在启动时,因为载入的东西太多,启动速度让人着急。







