請問如何將vb這段的寫法轉到delphi 上呢 |
尚未結案
|
degr
一般會員 發表:22 回覆:36 積分:21 註冊:2002-03-25 發送簡訊給我 |
幫幫忙
Option Explicit Const FilePath = "C:\Tutorial\Initiator\Bin\"
Dim sChannelName
Private Sub cmdStartInitiator_Click()
On Error GoTo errorHandler:
Dim xmldom As New MSXML2.DOMDocument
Dim obj As New Interchange
Dim xmlnode As IXMLDOMNode
Set xmldom = New MSXML2.DOMDocument
xmldom.Load FilePath & txtxml.Text
Set xmlnode = xmldom.selectSingleNode("RosettaNetMessage/ServiceContent/*") obj.SubmitSync 1, xmlnode.xml, , , , , , sChannelName
Exit Sub
errorHandler:
MsgBox "The error is: " & Err.Description
Exit Sub
End Sub Private Sub cmdGetChannel_Click() Err.Clear
On Error GoTo errorHandler:
Dim InitiatorDUNS As String
Dim ResponderDUNS As String
Dim xmlnode As IXMLDOMNode
Dim xmldom As New DOMDocument
Dim obj As New Interchange
Dim objcontactrnaic As New PIPAdapterSDK.CPIPAdapterManager
Dim sGlobalpicode As String
Dim sPipversion As String
Dim sGlobalBscode As String
Dim bSync As Boolean
sGlobalpicode = txtgpic.Text
sPipversion = txtpipver.Text
sGlobalBscode = txtgbac.Text
InitiatorDUNS = txtFromGlobalBusinessIdentifier.Text
ResponderDUNS = txtToGlobalBusinessIdentifier.Text
If LTrim(RTrim(txtsynchronous.Text)) = "0" Then
bSync = False
Else
bSync = True
End If
sChannelName = objcontactrnaic.GetInitiatorChannelName(sGlobalpicode, sPipversion, sGlobalBscode, InitiatorDUNS, ResponderDUNS, bSync)
txtChannelName.Text = sChannelName
Exit Sub
errorHandler:
MsgBox "No channel is found corresponding to these parameters"
sChannelName = ""
txtChannelName.Text = sChannelName
Exit Sub
End Sub
|
ddy
站務副站長 發表:262 回覆:2105 積分:1169 註冊:2002-07-13 發送簡訊給我 |
|
degr
一般會員 發表:22 回覆:36 積分:21 註冊:2002-03-25 發送簡訊給我 |
我是不熟vb呼叫com物件的方法 看不懂
Const FilePath = "C:\Tutorial\Initiator\Bin\"
上面我知道
Dim sChannelName
Private Sub cmdStartInitiator_Click()
On Error GoTo errorHandler:
Dim xmldom As New MSXML2.DOMDocument
上面這一行我不知道如何設定,是不是要import type library msxml.Dll近來 Dim obj As New Interchange
這行不知道Interchange 如何來設定 Dim xmlnode As IXMLDOMNode
這行不知道 Set xmldom = New MSXML2.DOMDocument
這行不是已經設定過了,為什麼要重新設定
xmldom.Load FilePath & txtxml.Text 這行我知道 Set xmlnode = xmldom.selectSingleNode("RosettaNetMessage/ServiceContent/*")
這行我是知道指讀取xml某一階層 obj.SubmitSync 1, xmlnode.xml, , , , , , sChannelName
這行不知道
Exit Sub errorHandler:
MsgBox "The error is: " & Err.Description
這是有錯誤出現的訊息
Exit Sub
End Sub Private Sub cmdGetChannel_Click() Err.Clear
On Error GoTo errorHandler:
Dim InitiatorDUNS As String 設定字串
Dim ResponderDUNS As String 設定字串
Dim xmlnode As IXMLDOMNode 不曉得要如何設定IXMLDOMNode 從何來
Dim xmldom As New DOMDocument 不曉得要如何設定DOMDocument 從何來
Dim obj As New Interchange 不曉得要如何設定Interchange 從何來
Dim objcontactrnaic As New PIPAdapterSDK.CPIPAdapterManager
PIPAdapterSDK 必須uses 哪個unit Dim sGlobalpicode As String 設定字串
Dim sPipversion As String 設定字串
Dim sGlobalBscode As String 設定字串
Dim bSync As Boolean 設定boolean sGlobalpicode = txtgpic.Text
sPipversion = txtpipver.Text
sGlobalBscode = txtgbac.Text
InitiatorDUNS = txtFromGlobalBusinessIdentifier.Text
ResponderDUNS = txtToGlobalBusinessIdentifier.Text If LTrim(RTrim(txtsynchronous.Text)) = "0" Then
bSync = False
Else
bSync = True
End If
上面幾行都知道 sChannelName = objcontactrnaic.GetInitiatorChannelName(sGlobalpicode, sPipversion, sGlobalBscode, InitiatorDUNS, ResponderDUNS, bSync)
我知道是將objcontactrnaic.GetInitiatorChannelName
取出字串給sChannelName txtChannelName.Text = sChannelName
Exit Sub 以下的都知道.....
errorHandler:
MsgBox "No channel is found corresponding to these parameters"
sChannelName = ""
txtChannelName.Text = sChannelName
Exit Sub
End Sub 我算是新手...上面這些程式主要將取出xml的通道,並且透過InitiatorAdapter.dll發送xml
公司給我的任務是將vb改寫成delphi用的並且做到自動化..上面vb是手動設定的
我主要是上面我有寫不知道的地方,就是卡在那邊...希望版主可以幫我解說一下
我真的是沒接觸過vb,雖然看的懂一點..還是有地方不知道.還希望可以解惑一下
InitiatorAdapter.dll 的 vb code 我可以看的懂且已經改好了
發送的vb code 還在傷腦筋中.... 在這先謝過版主了......
|
timhuang
尊榮會員 發表:78 回覆:1815 積分:1608 註冊:2002-07-15 發送簡訊給我 |
要使用 COM 的東東, 可以參考 Comobj unit 的相關資料. Dim xmldom As New MSXML2.DOMDocument
上面這一行我不知道如何設定,是不是要import type library msxml.Dll近來
uses Comobj; .. var xmldom: Variant; begin xmldom := CreateOleObject('MSXML2.DOMDocument'); end;Dim obj As New Interchange 這行不知道Interchange 如何來設定 一樣的方法來建立, 有 New 的要用 CreateOleObject Dim xmlnode As IXMLDOMNode 這行不知道 這種的要有對應的 pas 或 dcu 才行, 否則的話直接宣告一個 variant 變數即可 var xmlnode : Variant; Set xmldom = New MSXML2.DOMDocument 這行不是已經設定過了,為什麼要重新設定 是的, 正如你所說的, 不須要這行, 在 vb 中 dim xmldom as MSXML2.DOMDocument Set xmldom = New MSXML2.DOMDocument 和 dim xmldom as New MSXML2.DOMDocument 是一樣的意思! obj.SubmitSync 1, xmlnode.xml, , , , , , sChannelName 這行不知道 這行看起來是進行送出的行為, 在 vb 下你可以用 obj.SubmitSync 來看到參數的名稱, 你會看到 SubmitSync(iData as Long, inode as IXMLNODE ... ) 等, 重點在於這些參數的名稱, 在 delphi 中的呼叫方式如下: obj.SubmitSync(iData:=1, inode:=xmlnode.xml, ChannelName := sChannelName) 即可, 就是用 逗號 省略的狀況下參數, 在 delphi 中直接不用給, 直接用 參數:=值 的方式傳入即可 Exit Sub Dim xmlnode As IXMLDOMNode 不曉得要如何設定IXMLDOMNode 從何來 Dim xmldom As New DOMDocument 不曉得要如何設定DOMDocument 從何來 Dim obj As New Interchange 不曉得要如何設定Interchange 從何來 Dim objcontactrnaic As New PIPAdapterSDK.CPIPAdapterManager PIPAdapterSDK 必須uses 哪個unit 上面幾點的做法如下, 若是沒有 import lib 的話, 可以這樣做: [code var xmlnode, xmldom, obj, objcontactrnaic: Variant; begin xmldom := CreateOleObject('Interchange'); //有 new 的就是要用 createoleobject 來建立 object objcontactrnaic := CreateOleObject('PIPAdapterSDK.CPIPAdapterManager'); end; [/code] 至於 PIPAdapterSDK 必須uses 哪個unit 你可以先不用處理! comobj 的使用方式並不難, 原理如同上面的說明, 可以自行推敲, 有問題再問. 另外附加一下, xmldom 的部分, delphi 也有內建, 不一定要使用 ole 的方式來使用, 也可以直接使用 delphi 的包裝好的 xmldom. |
degr
一般會員 發表:22 回覆:36 積分:21 註冊:2002-03-25 發送簡訊給我 |
本站聲明 |
1. 本論壇為無營利行為之開放平台,所有文章都是由網友自行張貼,如牽涉到法律糾紛一切與本站無關。 2. 假如網友發表之內容涉及侵權,而損及您的利益,請立即通知版主刪除。 3. 請勿批評中華民國元首及政府或批評各政黨,是藍是綠本站無權干涉,但這裡不是政治性論壇! |