`
qzriso
  • 浏览: 242906 次
  • 性别: Icon_minigender_1
  • 来自: ph
社区版块
存档分类
最新评论

如何在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.  

分享到:
评论
1 楼 zrj_software 2011-09-29  
说了等于没说,LZ能否把DLL代码给我研究下啊307293759@qq.com

相关推荐

    delphi动态调用Dll

    4. **PInvoke和stdcall约定**:在Delphi中,通常使用PInvoke(Platform Invoke)来调用DLL函数。PInvoke是一种机制,使得托管代码(如Delphi)可以调用非托管代码(如C语言编写的DLL)。DLL函数通常使用stdcall调用...

    DelphiDll创建与调用

    1. **导入DLL**:首先,在项目中引入`System.LoadLibrary`和`System.GetProcAddress`这两个函数,用于加载和获取DLL函数地址。 2. **声明DLL接口**:在新项目的接口部分,声明DLL中的函数,与`MyDllInterfaces`单元...

    delphi如何调用C#的dll

    2. **声明 DLL 函数**:在 Delphi 的单元文件中,使用 `external` 关键字声明从 DLL 中调用的函数。例如: ```pascal procedure YourFunction(param1: Integer); stdcall; external 'ClassLibrary1.dll'; ``` 3...

    Delphi调用c++ DLL技术文档

    由于Delphi和C++在数据类型定义上存在差异,因此在调用DLL函数时要注意类型转换。例如,C++中的`wchar_t`在Delphi中通常对应`WideString`类型。 #### 3.3 错误处理 在实际应用中,可能遇到DLL找不到、函数地址无效...

    Qt.VC调用delphi编写的dll lib,详细方法

    在跨平台的软件开发中,有时我们需要将不同编程语言编写的组件集成在一起,例如使用Qt(C++)或Visual C++(VC)调用由Delphi编译的DLL库。Delphi以其强大的面向对象特性及易用性,在创建高效、快速的Windows应用...

    delphi调用labview 生成的dll

    在调用DLL函数时,一定要考虑到可能出现的错误情况,如DLL加载失败、函数找不到、参数不匹配等。通过异常处理机制来捕获和处理这些错误。 6. **数据类型转换:** LabVIEW和Delphi的数据类型可能不完全对应,因此...

    Delphi 几种常见的Dll调用方法l

    下面将详细阐述Delphi7中调用DLL的几种常见方法。 1. **LoadLibrary 和 FreeLibrary** - `LoadLibrary` 是 Windows API 中的一个函数,用于加载指定的 DLL 文件,并返回一个句柄,表示 DLL 在进程中的实例。 - `...

    DelphiXE10.3编写的静态dll及如何调用dll的示例

    本篇将详细介绍如何在Delphi XE10.3中创建静态DLL以及如何从其他Delphi应用程序中调用这些DLL。 首先,我们要理解什么是静态DLL。与常规的动态DLL不同,静态DLL并不是在运行时由操作系统加载,而是将其代码和数据...

    delphi7调用高版本xe的dll字符串传参示例

    // 调用DLL函数 MyFunction(PChar('你好,DLL!')); end else ShowMessage('无法找到DLL中的函数'); FreeLibrary(MyDLLHandle); end else ShowMessage('无法加载DLL'); ``` 5. 在适当的地方调用`MyFunction`...

    手把手教delphi写你的dll文件

    在调用DLL中的函数或过程时,必须使用`stdcall`参数。这是因为大多数DLL都使用`stdcall`调用约定,它负责清理堆栈。如果不使用`stdcall`,可能会导致内存泄漏或其他不可预料的行为。 ##### 2. 使用`external`语句...

    Delphi调用C#DLL.rar

    标题 "Delphi调用C#DLL.rar" 涉及的核心技术是跨语言互操作,具体来说,就是如何在Delphi环境下调用由C#编写的动态链接库(DLL)。这个压缩包包含了实现这一功能所需的全部组件和指导文档。 1. **C# DLL**:C#是一...

    通达信DLL函数编程(delphi).zip

    通达信DLL函数编程主要涉及的是在Delphi环境下开发用于通达信软件的动态链接库(DLL)指标公式。Delphi是一种强大的面向对象的编程语言,以其高效的代码生成和直观的集成开发环境(IDE)而受到程序员的青睐。在金融...

    Delphi 调用VC生成的DLL

    6. **Delphi调用DLL**: - 在Delphi中,导入DLL函数后,可以直接像调用本地函数一样调用DLL中的函数,确保参数类型匹配。 - 调用时需注意错误处理,因为DLL函数可能抛出异常或返回错误值。 总结来说,"Delphi ...

    Delphi 10.2版本编译dll和调用dll.rar

    3. **调用DLL函数**:通过函数指针调用DLL中的函数。记得根据函数的调用约定正确地传递参数。 4. **释放资源**:当你完成DLL的使用,记得使用`FreeLibrary`函数释放模块句柄,以避免资源泄露。 在Delphi 10.2中,...

    Delphi中dll调用示例

    在Delphi编程环境中,...4. 在需要的地方调用DLL函数。 注意,使用DLL时要考虑兼容性问题,如API版本、平台差异等。此外,为了确保程序的稳定性,需要正确处理可能出现的错误,如DLL加载失败、找不到导出函数等问题。

    delphi 生成和调用com,dll,服务程序小例子

    调用DLL时,可以使用Delphi的`GetProcAddress`函数或者在单元中直接导入导出函数。 最后,服务程序(Service Program)是在后台运行的应用程序,不受用户界面的直接影响。在Windows系统中,服务通常用于长期运行的...

    delphi 调用dll中的窗体

    本篇文章将深入探讨如何在Delphi中调用DLL中的窗体,并以"Project"和"dll"这两个文件夹中的示例为参考。 首先,我们来理解DLL的工作原理。DLL文件包含了可执行代码和数据,这些资源可以在运行时被多个程序加载和...

    C# 调用Delphi dll 实例代码

    在.NET框架中,C#作为主要的编程语言,有时候需要调用非托管代码,比如由Delphi编译的DLL动态链接库。本实例将详细解释如何在C#中调用Delphi编写的DLL,并提供相应的代码示例。 首先,我们需要了解Delphi DLL的基本...

    Delphi7静态动态调用VS2019 C#开发的非托管DLL且整合DLL

    在IT行业中,跨语言通信是常见的需求,本案例聚焦于如何使用Delphi 7静态或动态地调用由VS2019中的C#编译的非托管DLL,并将其整合到DLL项目中。非托管DLL是指不依赖.NET Framework运行时环境的DLL,这使得它可以在不...

    关于delphi 7的DLL使用回调函数

    在Delphi 7中,DLL(动态...3. 导出DLL函数以便主程序调用。 4. 在主程序中实现回调接口,并在需要时加载DLL,传递回调函数。 通过这种方式,可以实现DLL与主程序之间的通信,灵活地在两者之间传递数据和控制流程。

Global site tag (gtag.js) - Google Analytics