惯性聚合 高效追踪和阅读你感兴趣的博客、新闻、科技资讯
阅读原文 在惯性聚合中打开

推荐订阅源

D
DataBreaches.Net
N
Netflix TechBlog - Medium
F
Fortinet All Blogs
让小产品的独立变现更简单 - ezindie.com
让小产品的独立变现更简单 - ezindie.com
宝玉的分享
宝玉的分享
Y
Y Combinator Blog
博客园 - 聂微东
WordPress大学
WordPress大学
酷 壳 – CoolShell
酷 壳 – CoolShell
B
Blog RSS Feed
小众软件
小众软件
The GitHub Blog
The GitHub Blog
S
SegmentFault 最新的问题
Hugging Face - Blog
Hugging Face - Blog
Jina AI
Jina AI
Microsoft Azure Blog
Microsoft Azure Blog
V
V2EX
B
Blog
H
Help Net Security
D
Docker
钛媒体:引领未来商业与生活新知
钛媒体:引领未来商业与生活新知
罗磊的独立博客
月光博客
月光博客
博客园 - 司徒正美

博客园 - xiaobin80

Development Environment Preparation Clang IDE的选择在Windows Visual Studio 2017 and Fx EOL 跟我学python(5)- 匹配数字 跟我学python(4)- 正则 跟我学python(3)--- 带shell功能的hello world 跟我学python(2)- 第一个程序 跟我学python --- 搭建开发平台 Debian server 安装 debian 与 ubuntu 之 - sudo Try Value 计算文件CRC32数值 docker ce on Debian 使用hugo在gitee上写blog spring cloud gateway - RequestRateLimiter postman使用 改进的冒泡算法 Create User - mysql J-Link clone问题 修复山寨版的J-Link
COM调用 – VB、PB
xiaobin80 · 2016-01-09 · via 博客园 - xiaobin80

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

    VB: V9.0

    PB: V8.0

    Delphi创建的文件,提供给VB9调用;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)

运行效果:

Cap47

code: frmDemo.vb(VS2008)

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.v90/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.v90/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)

运行效果:

Cap48

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

Cap04Cap05

    保存工作区名称

Cap06

(2) 建立目标类型

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

    然后,选择“Application”。

Cap10Cap07

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

Cap11Cap13

(3) 建立窗口

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

    然后,选择“Window”。

Cap14Cap15

    初始状态的窗口

Cap16

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

拖拽windows控件

添加按钮

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

Cap17Cap18

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

Cap19Cap20

2. 添加代码

(1) 按钮事件

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

Cap21

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事件;

Cap22Cap23

3. 打包程序

(1) 建立工程

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

    选择“Application”

Cap24Cap25

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

Cap26Cap27

(2) 编译并部署

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

Cap28Cap29

应用程序执行效果:

Cap30Cap31

改进后:

Cap00Cap01

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.