VB调用DLL中的函数

chenxi_1984 2010-04-02 09:03:03
我想实现这样一个功能,我有一个XML文件格式如下
<Field cnName="帐号" fieldType="varchar" fieldLen="40" fieldScale="" ></Field>
<Field cnName="账户名称" fieldType="varchar" fieldLen="80" fieldScale="" ></Field>
<Field cnName="部门 " fieldType="varchar" fieldLen="4" fieldScale="" ></Field>
<Field cnName="柜员组 " fieldType="char" fieldLen="2" fieldScale=""></Field>

cnName= 字段名称 fieldType=字段类型 fieldLen=字段长度 fieldScale=小数点的位数

我想把XML的各个字段属性读入保存到数组中,然后把数组作为参数传递给Activex DLL中函数,VB通过调用该函数,把各个字段成一个模板(只要把字段一次传给该函数的参数即可)

DLL名称为makerdf.dll 其中类为 IdeaRDF
函数为AppendField(name As String,desc As String, vartype As Integer, Length As Integer, dec As Integer, impliedDec As Boolean, parameter As String))
name //字段名称>
desc //字段说明>
vartype // 1-字符 2-数字 5-日期 时间 0-无效类型>
offset //偏移 固定为0>
length //长度>
dec /小数位数> impliedDec //如果源数据包括小数位取false 不包括取true>
parameter //格式掩码 如日期型的格式“年年年年月月日日”

我写的程序如下:(只写了读入XML,和引用DLL部分,调用部分麻烦各位大师帮忙)
程序在引入DLL部分报错了,就是Activex 部件无法创建对象
Dim mrdll As IdeaRDF
Private MyObj As Object

'这个函数用来读取xml文件中的字段属性

Private Function GetFields(xmlFile As String) As String
Dim oXmlDoc As DOMDocument
Dim oXmlNodes As IXMLDOMNodeList
Dim i As Long
Dim j As Long
Dim NodeLength As Long
Dim FieldName() As String
Dim FieldType() As String
Dim FieldLen() As Long
Dim FieldDec() As Long
Set oXmlDoc = New DOMDocument
oXmlDoc.Load xmlFile
Set oXmlNodes = oXmlDoc.documentElement.selectNodes(".//Field") 'Field集合
NodeLength = oXmlNodes.Length - 1
ReDim FieldName(NodeLength)
ReDim FieldType(NodeLength)

For i = 0 To NodeLength
FieldName(i) = oXmlNodes.Item(i).Attributes(1).Text '字段名称
FieldType(i) = oXmlNodes.Item(i).Attributes(2).Text '字段类型


'循环Field集合 , Attributes(1).text是一个Field中第二个属性的值,Attributes(2).text是一个Field中第三个属性的
Next i

'调用DLL中的AppendField
Set oXmlNodes = Nothing
Set oXmlDoc = Nothing
End Function

Private Sub Command1_Click()

Dim fileName As String '文件

Dim sXml As String
Dim Stype As String

Dim sTxt As String
Dim hFile As Long

'获取xml中的字段名称
fileName = "d:\KNA_DPAC_20100308.xml"

End Sub


Private Sub Form_Load()

Set MyObj = CreateObject("makerdf.IdeaRDF")
End Sub
...全文
198 4 打赏 收藏 转发到动态 举报
写回复
4 条回复
切换为时间正序
请发表友善的回复…
发表回复
嗷嗷叫的老马 2010-04-04
  • 打赏
  • 举报
回复
CreateObject("makerdf.IdeaRDF"),成功调用的前提是目标库是已经在本机注册好了的.
xiaomingauk 2010-04-03
  • 打赏
  • 举报
回复
先声明例如:Public Declare AppendField Lib "makerdf" Alias "IdeaRDF"(name As String,desc As String, vartype As Integer, Length As Integer, dec As Integer, impliedDec As Boolean, parameter As String))
bancxc 2010-04-02
  • 打赏
  • 举报
回复
bancxc 2010-04-02
  • 打赏
  • 举报
回复
CreateObject("makerdf.IdeaRDF") 这个不行啊
看一下 IdeaRDF的属性 按F4, 属性是private吗
另外编译好注册一下regsrv32

相关推荐

1,445

社区成员

发帖
与我相关
我的任务
社区描述
VB 控件
社区管理员
  • 控件
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告