熱點推薦:
您现在的位置: 電腦知識網 >> 編程 >> Delphi編程 >> 正文

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

2013-11-23 17:39:57  來源: Delphi編程 

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

  建立DotNetFunccs 封裝要使用的FunctionProcedure
 
  生成密鑰文件用於給程序集強名稱簽名

sn k keysnk

  使用強名稱簽名編譯成類庫

csc /t:library DotNetFunccs

  生成類型庫

tlbexp DotNetFuncdll /out:DotNetFunctlb

  注冊dll

regasm DotNetFuncdll

  移入gac全局程序集緩存

gacutil i DotNetFuncdll

  Delphi中的調用測試

uses  Variants COMOBJ OleCtnrs Activex;
 
procedure TFormButtonClick(Sender: TObject);
var
  SharpObject: Variant;
  TestValue: string;
begin
  try
    try
      SharpObject := CreateOleObject(CSharpServerSharpObject);
      TestValue := SharpObjectDecryptTripleDES(EditText);
      EditText :=TestValue;
    except
      on e: exception do
      begin
        ShowMessage(eMessage);
      end;
    end;
  finally
    SharpObject := Unassigned;
  end;
end;

procedure TFormButtonClick(Sender: TObject);
var
  SharpObject: Variant;
  TestValue: string;
begin
  try
    try
      SharpObject := CreateOleObject(CSharpServerSharpObject);
      TestValue := SharpObjectEncryptTripleDES(EditText);
      EditText :=TestValue;
    except
      on e: exception do
      begin
        ShowMessage(eMessage);
      end;
    end;
  finally
    SharpObject := Unassigned;
  end;
end;

initialization
  CoInitialize(nil);

finalization
  CoUninitialize;

end


From:http://tw.wingwit.com/Article/program/Delphi/201311/24858.html
    推薦文章
    Copyright © 2005-2013 電腦知識網 Computer Knowledge   All rights reserved.