COM调用–Delphi、PB、C++、VB

本文使用Delphi和C++创建CRC32的COM文件(Dll)。

VB: V6.0

PB: V8.0

Delphi创建的文件,提供给VB6调用;C++创建的文件,提供给PB8调用。

一、VB部分

COM文件:FCN.dll

注册:regsvr32 x:\yyy\FCN.dll

1. 校验值文件

描述:保存FCN文件。

原型:procedure saveFCN(saveFile1,CheckFilePath:pchar);

参数:saveFile1: 保存文件的全路径(路径+文件名称)

CheckFilePath: 被校验文件的全路径

(1) 声明方法

Option Explicit
Private Declare Sub saveFCN Lib "FCN.dll" (ByVal saveFile1 As String, ByVal CheckFilePath As String)

(2) 调用方法

Call saveFCN(saveFile1, CheckFilePath1)

运行效果:

code: frmDemo.vb(VS2005)

Option Strict Off
Option Explicit On
Friend Class frmDemo
    Inherits System.Windows.Forms.Form
    Private Declare Sub saveFCN Lib "FCN.dll" (ByVal saveFile1 As String, ByVal CheckFilePath As String)
   
    Private Sub cmdCall_Click(ByVal eventSender As System.Object, ByVal eventArgs As System.EventArgs) Handles cmdCall.Click
        ‘定义要保存的文件和检查的文件(具体路径和文件名称)
        Dim saveFile1 As Object
        Dim CheckFilePath1 As String
       
        ‘saveFile1 = "c:\s\datasb.fcn"
        CheckFilePath1 = Text1.Text
       
        ‘UPGRADE_WARNING: Couldn‘t resolve default property of object saveFile1. Click for more: ‘ms-help://MS.VSCC.v80/dv_commoner/local/redirect.htm?keyword="6A50421D-15FE-4896-8A1B-2EC21E9037B2"‘
        saveFile1 = fcnPathTxt.Text
       
       
        ‘调用过程
        ‘UPGRADE_WARNING: Couldn‘t resolve default property of object saveFile1. Click for more: ‘ms-help://MS.VSCC.v80/dv_commoner/local/redirect.htm?keyword="6A50421D-15FE-4896-8A1B-2EC21E9037B2"‘
        Call saveFCN(saveFile1, CheckFilePath1)
        Me.Text = "生成FCN文件-完成"
    End Sub
End Class

2. 比较校验值

描述:计算文件的CRC32值。

原型:function calCRC32(filePath1:String):DWORD;

参数:filePath1: 要计算的文件(具体路径和文件名称)

描述:读取FCN文件的CRC32值。

原型:function readFCN(loadFile1:String):DWORD;

参数:loadFile1: 要读取的文件(具体路径和文件名称)

(1) 声明方法

Option Explicit
Private Declare Function calCRC32 Lib "FCN.dll" (ByVal filePath1 As String) As Long ‘calCRC32

Private Declare Function readFCN Lib "FCN.dll" (ByVal loadFile1 As String) As Long    ‘readFCN

(2) 调用方法

‘计算

calCRC32(filePath1)

‘读值

readFCN(loadFile1)

运行效果:

code: rmDemCrc32.vb(VS2005)

Option Strict Off
Option Explicit On
Friend Class frmDemCrc32
    Inherits System.Windows.Forms.Form
    Private Declare Function calCRC32 Lib "FCN.dll" (ByVal filePath1 As String) As Integer
   
   
    Private Declare Function readFCN Lib "FCN.dll" (ByVal loadFile1 As String) As Integer
   
    Private Sub cmdCal_Click(ByVal eventSender As System.Object, ByVal eventArgs As System.EventArgs) Handles cmdCal.Click
        ‘定义要计算的文件(具体路径和文件名称)
        Dim filePath1 As String
        filePath1 = filePathTxt.Text
       
        ‘调用函数
        Label_cal.Text = CStr(calCRC32(filePath1))
       
    End Sub
   
    Private Sub cmdReadFCN_Click(ByVal eventSender As System.Object, ByVal eventArgs As System.EventArgs) Handles cmdReadFCN.Click
        ‘定义要读取的文件(具体路径和文件名称)
        Dim loadFile1 As String
        loadFile1 = fcnPathTxt.Text
       
        ‘调用函数
        Label_read.Text = CStr(readFCN(loadFile1))
    End Sub
End Class

二、PB部分

COM文件:FCV.dll

注册:regsvr32 x:\yyy\FCV.dll

下载PB8.0,请查看此论坛:http://www.sybasebbs.com/forum.php?mod=viewthread&tid=5568&fromuid=6

时间: 2024-10-06 12:31:33

COM调用–Delphi、PB、C++、VB的相关文章

C#调用Delphi的dll之详解

C#调用Delphi接口方法,有两种解决办法: 一.将Delphi程序编译成一个COM组件,然后在C#里引用COM组件. 二.非托管调用Dephi的DLL文件. 这里我们主要讲解一下第二种方法,讲第二种方法之前首先讲解下DllImport. DllImport是System.Runtime.InteropServices命名空间下的一个属性类,其功能是提供从非托管DLL导出的函数的必要调用信息. DllImport属性应用于方法,要求最少要提供包含入口点的dll的名称.     DllImpor

fastscript调用delphi方法和DELPHI调用FASTSCRIPT方法

fastscript调用Delphi过程:  1. 先创建事件处理方法:TfsCallMethodEvent 2. 然后再用调用TfsScript.AddMethod方法,第一个参数为Delphi方法的语法,第二个参数为TfsCallMethodEvent链接的一个句柄. 如在Delphi有一个过程为DelphiFunc, ….. procedure TForm1.DelphiFunc(s: String; i: Integer);  begin    ShowMessage(s + ', ' 

在.net中调用Delphi dll的Pchar转换

Pchar是非托管代码,要在.net中调用Delphi dll中的功能,请使用MarshalAs属性告知.net调用PInvoke去转换.net中标准的string类型.如果Delphi dll是Delphi2007以前的版本编译的,则Pchar是Ansi类型:如果Delphi dll是Delphi2009以后的版本编译的,则Pchar是Unicode类型.请看以下实例. Ansi类型: [DllImport("my.dll")] [return: MarshalAs(Unmanage

FastReport调用Delphi中的人民币大写转换自定义函数

FastReport调用Delphi中的人民币大写转换自定义函数 FastReport调用Delphi中的人民币大写转换自定义函数 function TJzpzEdit1.MoneyCn(mmje: Double): string; const s1: string = '零壹贰叁肆伍陆柒捌玖'; s2: string = '分角元拾佰仟万拾佰仟亿拾佰仟万'; function StrTran(const S, s1, s2: string): string; begin Result := S

Java中调用Delphi编写的DLL

有些时候,要写一些程序,在 JAVA 里面好难实现, 但如果使用其它编程语言却又比较容易时,我们不妨通过 JNI 来让不同语言的程序共同完成. JNI 的教程, 网上 C 的比较多,Java 也提供了 javah.exe 为 C 语言的 JNI 程序生成头文件, 如果你是一个 Delphi 编程员, 能否让 JAVA 与 Delphi 程序交互呢? 答案是肯定的,今天我们就来看一下一个简单的例子. Helloworld. 主要是来认识一下, JAVA 怎样调用 Delphi 程序的方法. 好的,

CEF3中js调用delphi内部方法

在CEF1中JS调用delphi的方法已经贴过:http://www.cnblogs.com/Delphi-Farmer/archive/2013/05/17/3083794.html 但是CEF3升级了,貌似内核都不一样了,CEF1中的方法失效了,查阅了一些资料,得出如下结果: delphi代码: interface uses ceflib;//其它 type //这里建议用class 不建议用class(TThread) 不然有些地方要报错 TMyExtension = class(TThr

vc调用delphi的dll 参数传递 报错

可能原因: 调用方式约定不一致. 函数调用约定如下: 1. __cdecl:C 和 C++ 程序的缺省调用规范. 2. __stdcall:标准调用约定(即WINAPI调用约定),也就是pascal调用约定. 如果VC调用时,调用的约定方式和delphi的dll中函数约定方式不一致,就会出问题.

修改window.external使JS可调用Delphi方法

原文地址:http://hi.baidu.com/rarnu/blog/item/4ec80608022766d663d986ea.html 在js中,有一个比较特殊的对象,即window.external,用它可以调用浏览器提供的外部方法一个很简单的例子就是将当前页添加到收藏夹window.external.addFavorite("http://blog.csdn.NET/youthon","弘石的博客');这样写脚本就可以了.那么如果我想自己定义external,以便在

JS调用Delphi编写的OCX控件

原文:http://www.mamicode.com/info-detail-471283.html 一.使用Delphi XE2编写OCX控件 生成OCX工程: 1.File-New-Other,在New Items对话框中选择Delphi Projects-ActiveX-ActiveX Library 2.File-New-Other,在New Items对话框中选择Delphi Projects-ActiveX-ActiveX Control,这里要封Delphi的TStringGrid