本文使用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

1. PB工程图解

(1) 建立工作区

File->New

保存工作区名称

(2) 建立目标类型

点击工作区名称,右键New;

然后,选择“Application”。

输入应用程序名称;然后,点击下面两个任意输入框,向导会自动填充下面的两个输入框。

(3) 建立窗口

点击应用程序名称,右键New;

然后,选择“Window”。

初始状态的窗口

点击“layout”选项卡,即可设计窗口控件。

拖拽windows控件

添加按钮

点击工具栏中的按钮图标;然后,点击窗口即完成。

点击工具栏中的保存图标;即完成窗口的设计工作。

2. 添加代码

(1) 按钮事件

双击放置的按钮,在里面添加代码。

string       strCrc32, strFile
int          iValue  
OLEObject    objOle

objOle       = CREATE OLEObject  
iValue          = objOle.ConnectToNewObject("FCV.UCRC32.1")

// add file check
//strFile     = "d:\QQIntl2.11.exe"
strFile      = sle_1.text;

if fileexists(strFile) then
    strCrc32    = string(objOle.CalCRC32(strFile))
    MessageBox("test", strCrc32)
else
    messagebox("test", strFile + " not found")
end if

(2) 主窗口事件

应用程序启动主窗口。

点击带红色齿轮的图标,右键Edit,增加应用程序open事件;

3. 打包程序

(1) 建立工程

点击应用程序名称,右键New;

选择“Application”

填写如下部署程序信息,并保存。

(2) 编译并部署

点击应用程序名称,右键Full Build;然后,再点击Deploy。

应用程序执行效果:

改进后:

PB8.0 Setup FAQ

Q:
could not instantiate the webtarget applet info java class -error code
%d
this is most likely caused by not having the microsoft java vm installed
,You can install this vm through the 'Custom' install in IE 5.5

http://nntp-archive.sybase.com/nntp-archive/action/article/%3C372_OLORcu9ADHA.220@forums-1-dub%3E

A: set the Jaguar CTS as NT Service
    When the Jaguar CTS 3.6.1 is complete, select "Install Jaguar CTS 3.6.1 as NT Service" checkbox can be resolved.

Q:
  PB8.0 Patch

A:
  In the ISO file "PATCH\PB804all\" directory.

COM调用 – VB、PB的更多相关文章

  1. 使用Wscript/cscript调用VB脚本

    ●强制用Wscript.exe执行 SET Wshell=CreateObject("Wscript.Shell") if lcase(right(Wscript.fullName ...

  2. asp 调用 vb(activex dll) ,参数传递(传引用)需要注意

    今天上午测试 vb 与 c(dll) 之间交互,传递参数的时候,没遇到什么太大的问题. 下午在asp中调用vb(activex dll)时, 在asp代码中传参数到 vb(dll)中时,遇到问题了. ...

  3. C#创建COM组件供VB,PB,Delphi调用

    1  COM组件概述 COM是微软公司为了计算机工业的软件生产更加符合人类的行为方式开发的一种新的软件开发技术.在COM构架下,人们可以开发出各种各样的功能专一的组件,然后将它们按照需要组合起来,构成 ...

  4. C#.Net调用VB.Net中的MY

    用过VB.NET的人应该只要MY有多强大了吧,是不是很想在C#中也能调用呢? 当然是可以的,.net作为微软的跨语言的平台,必须是能实现的,不然微软就自己打自己嘴巴了~ 回到正题上: 1.在程序中加上 ...

  5. VC调用VB写的COM

    VB. 步骤: 1.创建类库:类库的创建必须分为接口和实现类:给外面提供的是COM接口: 创建了接口和类之后还要创建"Guid",这个在"工具->创建GUID&qu ...

  6. tensorflow C++接口调用图像分类pb模型代码

    #include <fstream> #include <utility> #include <Eigen/Core> #include <Eigen/Den ...

  7. C#调用VB进行简繁转换

    首先在C#项目中引用Microsoft.VisualBasic.dll,版本自己选择合适的 然后在项目中添加引用:using Microsoft.VisualBasic; 转换: 转为繁体: outp ...

  8. C# 里调用vb的inputbox弹出窗

    https://blog.csdn.net/hutao1101175783/article/details/16800871 先对项目添加对Microsoft.VisualBasic的引用 Inter ...

  9. PB调用C#编写的Dll类库

    在c# 中编写com组件,供PB调用实例 前言:c#中写的dll直接是不能被pb调用的,只有写成com组件才可以调用,所以用c#写dll时要注意. c#中新建类库 类库类型为通用类库,项目名为AddC ...

随机推荐

  1. php常量的声明和使用

    (1)声明 define("var",value) (2)先声明后使用 (3)默认区分大小写,如要不区分 define ("var",value,true); ...

  2. DOM扩展之Selectors API

    jQuery的核心就是通过CSS选择符查询DOM文档取得元素的引用,从而抛开了getElementById()和getElementsByTagName(). Selectors API致力于让浏览器 ...

  3. C#实现右下角弹出窗口效果

    /// <summary> /// 窗体动画函数 注意:要引用System.Runtime.InteropServices; /// </summary> /// <pa ...

  4. SDR 研究

    最近终于买了一个RTL2832u 电视棒,可以软件无线电了 使用我的小米3开发板 (安卓6.0),直接在应用商店里搜索 "sdr",到豌豆荚中,就有“RTL驱动程序” 点击下载安装 ...

  5. cookie窃取和session劫持

    Updates 2014-08-17 感谢@搞前端的crosser的提醒,加入了HTTP Response Splitting的内容. 此篇文章的Presentation戳这里. 一.cookie的基 ...

  6. 【RobotFramework自动化测试】RFS常用脚本

    读取后台数据文件:Import Variables | ${CURDIR}/\ABC.py 定位页面:Wait Until Keyword Succeeds | 5s | 500ms | select ...

  7. 腾讯优测优分享 | Android碎片化问题小结——关于闪光灯的那些事儿

    腾讯优测是专业的android自动化测试平台,拥有上千款真机,彻底解决android碎片化问题! 这里我要说的不是闪光灯的硬件特征,也不是说底层驱动的原理,我只是跟大家聊一聊在项目中遇到的一些关于闪光 ...

  8. redis windows

    下载 redis windows版本 redis-server  redis.windows.conf  //cmd 命令 启动成功 E:\redis\Redis-x64-3.0.500>red ...

  9. 练习2:雨淋湿了一道题,9个数字只能看清楚4个,第一个肯定不是1 [X * (Y3 + Z)]^2 = 8MN9,求出各个数字

    题目上的X代表的未知数,不一定是同一个数字. 其实这道题,直接一推敲答案就出来了,首先,积德尾数是9,说明 X*(Y3 + Z)的值尾数是3,3的因子只有1和3,所以X只有1和3候选,但是题目说第一个 ...

  10. LEETCODE —— Single Number

    Given an array of integers, every element appears twice except for one. Find that single one. Note:Y ...