[原创]如何在Delphi中调用.Net编写的DLL中的函数(Function)、过程(Procedure)
2006年10月19日 20:17:00 首发CSDN
标题:如何在Delphi中调用.Net编写的DLL中的函数(Function)、过程(Procedure)
关键字:Delphi 调用 .Net DLL 函数(Function)、过程(Procedure)
Author:丁报圣,Arthur(阿胜)QQ:34334055,EMAIL:yzdbs@msn.com
正文:
最近因公司群发邮件程式需要给注册一段时间没有激活的用户发激活邮件
邮件中有注册密码 需要还原发给用户 但由于密码加密是用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.
标题:如何在Delphi中调用.Net编写的DLL中的函数(Function)、过程(Procedure)
关键字:Delphi 调用 .Net DLL 函数(Function)、过程(Procedure)
Author:丁报圣,Arthur(阿胜)QQ:34334055,EMAIL:yzdbs@msn.com
正文:
最近因公司群发邮件程式需要给注册一段时间没有激活的用户发激活邮件
邮件中有注册密码 需要还原发给用户 但由于密码加密是用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.
运行图片
补充说明:在Delphi中调用.Net编写的DLL中的函数(Function)、过程(Procedure) 的另外调用方法:如果网速可以,可以用WebService来搞。