如何在Delphi中调用.Net编写的DLL中的函数

    最近因公司群发邮件程式需要给注册一段时间没有激活的用户发激活邮件
 
邮件中有注册密码 需要还原发给用户 但由于密码加密是用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.  

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值