程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 編程語言 >> 更多編程語言 >> Delphi >> 如何在Delphi中調用.Net編寫的DLL中的函數

如何在Delphi中調用.Net編寫的DLL中的函數

編輯:Delphi

  最近因公司群發郵件程式需要給注冊一段時間沒有激活的用戶發激活郵件,郵件中有注冊密碼 需要還原發給用戶 但由於密碼加密是用C# 中的TripleDES完成,手頭上又沒有現成Delphi的實現。時間緊急,現翻譯是來不及了,於是經過查資料反復實施 終於成功實現在Delphi中調用 C# 封裝的DLL中的方法(Function)和過程(Procedure)現把實施步驟寫下,以供有需要的XDJM分享:

  1、建立:DotNetFunc.cs 封裝要使用的Function、Procedure。

  2、生成密鑰文件,用於給程序集強名稱簽名

  sn -k key.snk

  3、使用強名稱簽名,編譯成類庫

  csc /t:library DotNetFunc.cs

  4、生成類型庫

  tlbexp DotNetFunc.dll /out:DotNetFunc.tlb

  5、注冊dll

  regasm DotNetFunc.dll

  6、移入gac全局程序集緩存

  gacutil -i DotNetFunc.dll

  7、Delphi中的調用測試

uses Variants, COMOBJ, OleCtnrs, Activex;
procedure TForm1.Button1Click(Sender: TObject);
var
 SharpObject: Variant;
 TestValue: string;
begin
 try
  try
   SharpObject := CreateOleObject('CSharpServer.SharpObject');
   TestValue := SharpObject.DecryptTripleDES(Edit1.Text);
   Edit2.Text :=TestValue;
  except
   on e: exception do
   begin
    ShowMessage(e.Message);
   end;
  end;
 finally
  SharpObject := Unassigned;
 end;
end;
procedure TForm1.Button2Click(Sender: TObject);
var
 SharpObject: Variant;
 TestValue: string;
begin
 try
  try
   SharpObject := CreateOleObject('CSharpServer.SharpObject');
   TestValue := SharpObject.EncryptTripleDES(Edit2.Text);
   Edit1.Text :=TestValue;
  except
   on e: exception do
   begin
    ShowMessage(e.Message);
   end;
  end;
 finally
  SharpObject := Unassigned;
 end;
end;
initialization
 CoInitialize(nil);
finalization
 CoUninitialize;
end.

  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved