線上訂房服務-台灣趴趴狗聯合訂房中心
發文 回覆 瀏覽次數:1260
推到 Plurk!
推到 Facebook!

請問如何將vb這段的寫法轉到delphi 上呢

尚未結案
degr
一般會員


發表:22
回覆:36
積分:21
註冊:2002-03-25

發送簡訊給我
#1 引用回覆 回覆 發表時間:2003-06-19 20:46:00 IP:61.13.xxx.xxx 未訂閱
幫幫忙 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

發送簡訊給我
#2 引用回覆 回覆 發表時間:2003-06-19 22:04:52 IP:211.74.xxx.xxx 未訂閱
degr 兄 可否將你所實作的delphi 片段貼上來 讓大家看看你是那一段語法轉換不熟,好讓大家針對問題處理        
degr
一般會員


發表:22
回覆:36
積分:21
註冊:2002-03-25

發送簡訊給我
#3 引用回覆 回覆 發表時間:2003-06-19 23:02:19 IP:61.13.xxx.xxx 未訂閱
我是不熟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

發送簡訊給我
#4 引用回覆 回覆 發表時間:2003-06-20 10:39:04 IP:203.95.xxx.xxx 未訂閱
要使用 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

發送簡訊給我
#5 引用回覆 回覆 發表時間:2003-06-22 13:11:20 IP:61.13.xxx.xxx 未訂閱
timhuang : 我大概懂了,,我會去嘗試去做看看..有問題在跟你請教一下... 謝謝!!
系統時間:2024-05-02 9:29:46
聯絡我們 | Delphi K.Top討論版
本站聲明
1. 本論壇為無營利行為之開放平台,所有文章都是由網友自行張貼,如牽涉到法律糾紛一切與本站無關。
2. 假如網友發表之內容涉及侵權,而損及您的利益,請立即通知版主刪除。
3. 請勿批評中華民國元首及政府或批評各政黨,是藍是綠本站無權干涉,但這裡不是政治性論壇!