c#

位置:IT落伍者 >> c# >> 浏览文章

利用Delphi2005编写C#应用程序


发布日期:2020年08月09日
 
利用Delphi2005编写C#应用程序
Delphi 被Broland成为windows平台上的最终的完整解决方案 Delphi 集成了Delphi C # Microsoft NET Framework and Win 支持图形用户接口( GUI ) Web开发 数据库富客户端应用程序( richclient applications )等多种开发开发语言同时还集成了软件生命周期管理( ALM )功能及开发者生产力促进功能(即RAD)在Delphi 所提供的IDE使windows平台的开发更快速更容易并且新的版本能更好的支持Win 标准同时还提供了一个世界级水平的编译器和调试器他还提供了大量的可重用的组件一个强大的代码生成向导可以帮你更快的产生你所想要的代码Delphi 还 包括了崭新的第二代企业核心对象技术 ( Borland Enterprise Core Objects II即ECO II ) ECO II 为模型驱动的NET企业应用提供了开发框架Delphi 还能协助开发团队在创建新应用的同时维护及改进现有的Windows应用

总之凭借Delphi 开发人员既能继续改进Win应用又能先行采用NET及ASPNET是一款值得使用的开发工具这篇文章中我们就在Delphi 开发环境中体验一下Borland为我们提供的C# 开发功能闲话少叙还是赶快进入我们的C#体验之旅吧!

先打开Delphi 开发环境点击菜单中的 file 在显示的下拉菜单中选择New 如下图所示

鼠标点击 new 会在右面会在右面出现一个下级菜单如下图所示

我们在其中选择 other 紧接着回弹出 new Items 对话框如下图所示

我们在其中的左边选择 c # Projects 并在右面选择 Console Application 点击 ok 按钮会出现 New Application 对话框在其中 Name: 中添加一个工程的名字 Location: 项中添加保存工程的位置可以点击后面的 按钮在弹出的保存对话中选择保存位置如下图所示

New Application 对话框中点击 ok 按钮进入Delphi 的编程环境

下图显示的是其中的项目窗口中的内容

因为我们在 New Application 对话框中没有改变工程的名称使用了默认的 Project 所以在此显示为 Projectexe (我们在这里将工程命名为 colcsharpip 所以显示为 colcsharpip AssemblyInfocs 是与系统有关的文件 Classcs 则是我们要添加代码的地方

默认的情况下在编译器的正中间就应该显示编译器给我们添加的代码如下所示

using System ;

namespace Project

{

/// <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

//

}

}

}

说明

)其中using System 表示使用System库就像用delphi 程序中开头的

uses

System Drawing System Collections System ComponentModel

System Windows Forms System Data ;

功能是一样的

)namespace Project中的namespace 关键字表示一个名空间

)class Class 表示建立一个名字为Class的类

)static void Main ( string [ ] args )才是程序的入口函数

下面我们建立自己的程序在程序中我们要实现的功能是再输入主机名字时显示该主机的ip地址并显示相关的信息如ip地址协议簇以及ip协议的版本步骤如下

)为了实现以上功能要在文件开头添加如下库的引用代码如下

//添加所要用到的库文件

using System Net ;

using System Net Sockets ;

using System Text RegularExpressions ;

)在static void Main ( string [ ] args ) { }中添加如下代码

//定义一个字符串型的变量用来保存主机的名称

string server = null ;

// 定义了一个用户输入的规则

// 用来检查用户的输入

// 他只允许用户输入 ~ 个字符长度的字符串

Regex rex = new Regex ( @ ^ [ a – z A – Z ] \ w { } $ ) ;

if ( args Length < ) //如果输入的字符长度小于

{

//如果没有主机名称被作为程序的参数输入

// 那么就一当前主机的名称作为默认的主机

server = Dns GetHostName ( ) ; //使用Dns类的GetHostName方法得到主机名称并保存在server变量中

Console WriteLine ( Using current host : + server ) ;

//使用Console类的WriteLine方法在控制面板中输出信息

}

else //如果输入的字符长度大于

{

server = args [ ] ; //得到参数中的值并保存在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 )

{

// 显示主机所支持的地址协议簇类型

// 如果这个主机所支持的地址协议簇类型是IPv enabled 那么它的值为 InternNetworkV

// 如果这个主机所支持的地址协议簇类型也是IPv enabled 那么它的值为 InterNetwork

Console WriteLine ( AddressFamily : + curAdd AddressFamily ToString ( ) ) ;

// 显示IPV 地址中的ScopeId 属性

if ( curAdd AddressFamily ToString ( ) == ProtocolFamily InterNetworkV ToString ( ) )

Console WriteLine ( Scope Id : + curAdd ScopeId ToString ( ) ) ;

// 使用标准格式显示主机的IP地址

// 如果是IPv格式将被显示为点分格式

// 如果是IPv格式将被现实为冒号分割的十六进制方式

Console WriteLine ( Address : + curAdd ToString ( ) ) ;

// 按字节格式显示主机的IP地址

Console Write ( AddressBytes : ) ;

Byte[] bytes = curAdd GetAddressBytes ( ) ;

for (int i = ; i < bytes Length ; i + + )

{

Console Write ( bytes [ i ] ) ;

}

Console WriteLine ( \ r \ n ) ;

}

// 显示主机是否支持IPv和IPv

Console WriteLine ( \ r \ n SupportsIPv : + Socket SupportsIPv ) ;

Console WriteLine ( SupportsIPv : + Socket SupportsIPv ) ;

if ( Socket SupportsIPv ) //如果支持IPv

{

// 显示IPv种侦听的地址

Console WriteLine ( \ r \ n IPvAny : + IPAddress IPvAny ToString ( ) ) ;

// 显示主机的回送地址

Console WriteLine ( IPvLoopback : + IPAddress IPvLoopback ToString ( ) ) ;

Console WriteLine ( IsLoopback ( IPvLoopback ) : + IPAddress IsLoopback ( IPAddress IPvLoopback ) ) ;

}

//显示IPv主机的回送地址

Console WriteLine ( IsLoopback ( Loopback ) : + IPAddress IsLoopback ( IPAddress Loopback ) ) ;

//输入任意键程序继续

Console Read ( ) ;

}

显示结果如下图所示

体会

总体感觉Delphi 中的提供了多种语言编写程序的平台但C#编译的速度还比较快不想再C++ Builder中的两种语言所产生的编译速度超慢的现象可见Borland工程师对于编译速度还是用心了不过就是在启动时因为载入的东西太多启动速度让人着急               

上一篇:Delphi8里在VCL.NET使用ADO.NET

下一篇:Delphi8 for Microsoft® .NET与Delphi 7的区别