Delphi 2005 整合 Win32、.NET、C#、ECO II 於單一 IDE,號稱「Windows 平台最終完整解決方案」。本文實測在 Delphi 2005 中建立 C# Console 專案,撰寫 DNS 解析程式 (輸入主機名顯示 IP、AddressFamily、IPv4/IPv6 支援),展示 C# 編譯速度、IDE 整合度與啟動效能體驗。
ColCSharpIP1,產生 Class.cs (邏輯) 與 AssemblyInfo.cs (屬性)。static void Main(string[] args)。
using System;
using System.Net;
using System.Net.Sockets;
using System.Text.RegularExpressions;
namespace ColCSharpIP1
{
class Class
{
[STAThread]
static void Main(string[] args)
{
string server = null;
// 輸入驗證:2~40 字元字母數字
Regex rex = new Regex(@"^[a-zA-Z]\w{1,39}$");
if (args.Length < 1) {
server = Dns.GetHostName(); // 預設本機
Console.WriteLine("Using current host: " + server);
} else {
server = args[0];
if (!rex.Match(server).Success) {
Console.WriteLine("Input string format not allowed.");
return;
}
}
ASCIIEncoding ascii = new ASCIIEncoding();
IPHostEntry host = Dns.Resolve(server); // 取得所有 IP
foreach (IPAddress ip in host.AddressList) {
Console.WriteLine("AddressFamily: " + ip.AddressFamily);
if (ip.AddressFamily.ToString() == "InterNetworkV6")
Console.WriteLine("ScopeId: " + ip.ScopeId);
Console.WriteLine("Address: " + ip.ToString()); // 標準格式
Console.Write("AddressBytes: ");
foreach (byte b in ip.GetAddressBytes()) Console.Write(b + " ");
Console.WriteLine("\r\n");
}
Console.WriteLine("SupportsIPv4: " + Socket.SupportsIPv4);
Console.WriteLine("SupportsIPv6: " + Socket.SupportsIPv6);
if (Socket.SupportsIPv6) {
Console.WriteLine("IPv6Any: " + IPAddress.IPv6Any);
Console.WriteLine("IPv6Loopback: " + IPAddress.IPv6Loopback);
Console.WriteLine("IsLoopback(IPv6Loopback): " + IPAddress.IsLoopback(IPAddress.IPv6Loopback));
}
Console.WriteLine("IsLoopback(Loopback): " + IPAddress.IsLoopback(IPAddress.Loopback));
Console.Read();
}
}
}
AddressFamily: InterNetwork Address: 192.168.1.100 AddressBytes: 192 168 1 100 AddressFamily: InterNetworkV6 ScopeId: 0 Address: fe80::20c:29ff:fe12:3456%4 AddressBytes: 254 128 0 0 0 0 0 0 0 0 0 0 2 12 47 86 SupportsIPv4: True SupportsIPv6: True IPv6Any: :: IPv6Loopback: ::1 IsLoopback(IPv6Loopback): True IsLoopback(Loopback): True
| 維度 | 體驗 |
|---|---|
| C# 編譯速度 | 快,明顯優於 C++Builder 雙語言編譯 |
| IDE 啟動速度 | 慢,載入 Win32/.NET 双运行时、多套設計器 |
| 程式碼編輯 | 語法高亮、智慧感知、重構 (Rename/Extract) 完整支援 C# |
| 偵錯 | 混合模式偵錯 (Win32 + .NET) 可在同一 Session 斷點 |
| 專案管理 | Project Group 可同時包含 Win32 EXE、C# DLL、ASP.NET Web |
| 部署 | 需目標機裝 .NET Framework 1.1/2.0,Delphi 2005 可產生合併安裝包 |
雖然 Delphi 2005 後續版本 (2006、Turbo、2007、2009、XE 系列) 已逐步分離 Win32 與 .NET 人格,但「單一 IDE 多語言」的探索為後來的 RAD Studio 奠定基礎。對於維護 Delphi 2005 專案的團隊,理解其 C# 整合模式仍有參考價值。