Pchar是非托管代碼,要在.net中調用Delphi dll中的功能,請使用MarshalAs屬性告知.net調用PInvoke去轉換.net中標准的string類型。如果Delphi dll是Delphi2007以前的版本編譯的,則Pchar是Ansi類型;如果Delphi dll是Delphi2009以后的版本編譯的,則Pchar是Unicode類型。請看以下實例。
Ansi類型:
[DllImport("my.dll")] [return: MarshalAs(UnmanagedType.LPStr)] public static extern String GetMyNickName( [MarshalAs UnmanagedType.LPStr)] String aName );
Unicode類型:
[DllImport("my.dll")] [return: MarshalAs(UnmanagedType.LPWStr)] public static extern String GetMyNickName( [MarshalAs(UnmanagedType.LPWStr)] String aName );
調用實例:
string myName; string nickName; myName = "Eric Tony"; nickName = GetMyNicName(myName);