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

系統間參數傳遞問題

缺席
cyl
中階會員


發表:163
回覆:171
積分:66
註冊:2002-07-11

發送簡訊給我
#1 引用回覆 回覆 發表時間:2002-12-26 15:59:04 IP:61.218.xxx.xxx 未訂閱
Dear All: 我有一個問題,如果我想做一個系統,系統可能未有很多子系統,分屬於不同人撰寫,每個子系統可能會互相傳值以做查詢,每個子系統會是一個專案,請問如果我在A的子系統想傳值給B的系統,是不是要靠外部呼叫執行檔來傳值, 或者說在系統開發的過程中在delphi應該如何規劃撰寫,才可以把每一個系統串聯起來,互相傳遞參數使用呢?? 因為我們現在在開發都是new一個project,裡面可能會有很多系統,但是這樣程式很大而且不能切分成多人撰寫,所以想請問一下規劃設計??
andyca
一般會員


發表:0
回覆:6
積分:1
註冊:2002-12-26

發送簡訊給我
#2 引用回覆 回覆 發表時間:2002-12-26 16:31:00 IP:202.95.xxx.xxx 未訂閱
參考一下: 程式都在同一台電腦執行時 你可以使用IPC,COM或是Windos messages 不同台時: 可以考慮用DCOM,不同台電腦要協同做一件或是一系列有系統的工作時,最好要有一個主控制的電腦,和寫Multi-Tier的程式差不多吧。 最重要的是界面要先定好...
cyl
中階會員


發表:163
回覆:171
積分:66
註冊:2002-07-11

發送簡訊給我
#3 引用回覆 回覆 發表時間:2002-12-26 17:15:13 IP:61.218.xxx.xxx 未訂閱
引言: 參考一下: 程式都在同一台電腦執行時 你可以使用IPC,COM或是Windos messages 不同台時: 可以考慮用DCOM,不同台電腦要協同做一件或是一系列有系統的工作時,最好要有一個主控制的電腦,和寫Multi-Tier的程式差不多吧。 最重要的是界面要先定好...
什麼是IPC?不需要到Multi-Tier,我只是想要開發單人使用的程式,但是會有很多系統,每個系統又有一點相關,每個系統可能又是不同仁開發,所以想請教如何開發系統才能把不同人的系統串聯起來??
ccchen
版主


發表:61
回覆:940
積分:1394
註冊:2002-04-15

發送簡訊給我
#4 引用回覆 回覆 發表時間:2002-12-27 08:01:27 IP:61.219.xxx.xxx 未訂閱
可以有好幾種方式考慮 1. 直接用Winexec, ShellExecute或CreateProcess等執行外部程式方法, 可以傳參數.--最方便使用.如果你只是呼叫時傅參數, 不是執行中還要有參數來往, 如此做應該足夠 2. 共同讀取一外部檔. 3. 用ShareMemory(其實這只是通稱,在Win32並不是真的ShareMemory,而是共用一Memory Map的機制), Implement不難,但觀念抽象些, 如果真有此需要, 我可以寫個例子給你看. 不過能避免就避免吧, 其實透過資料庫使用共同Data更理想
cyl
中階會員


發表:163
回覆:171
積分:66
註冊:2002-07-11

發送簡訊給我
#5 引用回覆 回覆 發表時間:2002-12-27 09:18:14 IP:61.218.xxx.xxx 未訂閱
引言: 可以有好幾種方式考慮 1. 直接用Winexec, ShellExecute或CreateProcess等執行外部程式方法, 可以傳參數.--最方便使用.如果你只是呼叫時傅參數, 不是執行中還要有參數來往, 如此做應該足夠 2. 共同讀取一外部檔. 3. 用ShareMemory(其實這只是通稱,在Win32並不是真的ShareMemory,而是共用一Memory Map的機制), Implement不難,但觀念抽象些, 如果真有此需要, 我可以寫個例子給你看. 不過能避免就避免吧, 其實透過資料庫使用共同Data更理想
Dear 先進 : "其實透過資料庫使用共同Data更理想",請問那要如何透過資料庫使用共同Data??例如我的A系統是客戶主檔,我的B系統是產品主檔,我如果在A系統的某個客戶,裡要知道B系統裡這個客戶購買哪些產品,應該如何做??例子可能不是很好,但是大概是這個意思,不知可否教我一個簡單的範例
andyca
一般會員


發表:0
回覆:6
積分:1
註冊:2002-12-26

發送簡訊給我
#6 引用回覆 回覆 發表時間:2002-12-27 10:13:32 IP:202.95.xxx.xxx 未訂閱
引言:
引言: 參考一下: 程式都在同一台電腦執行時 你可以使用IPC,COM或是Windos messages 不同台時: 可以考慮用DCOM,不同台電腦要協同做一件或是一系列有系統的工作時,最好要有一個主控制的電腦,和寫Multi-Tier的程式差不多吧。 最重要的是界面要先定好...
什麼是IPC?不需要到Multi-Tier,我只是想要開發單人使用的程式,但是會有很多系統,每個系統又有一點相關,每個系統可能又是不同仁開發,所以想請教如何開發系統才能把不同人的系統串聯起來??
我用的都是懶方法... IPC是Interprocess communication的縮寫,可以讓程式間可以傳資料,懶一點的話就用Windows的Message加上ATOM來傳資料,只要傳的資料不是很大,不多沒有問題。 用到的就只有SendMessage,然後傳ATOM的ID,另一個程式只要先把資料放到ATOM中就可,用GLobalAddAtom把資料放到ATOM中,把Atom的ID傳回給要求的程式就可以,要求的程式得到Atom的ID後,用GetAtomName得到資料,資料取得後用GlobalDeleteAtom把Atom的Handle還給Windows。但是Atom只可以傳255 Bytes的資料。要傳大量的資料,要用WM_COPYDATA的Windows message來傳資料。 至於如何在各程式間取得Message的同步,你可以使用WM_USER nnn,每個程式都用一樣的Message ID來傳資料,但是每個程式要知道對方的ID,不然就要用Broadcast的方式知道對方的ID。另一個方式是用RegisterWindowMessage,這是M$建議的方式。 關於Windows間的Data Exchange,請看MSDN: http://msdn.microsoft.com/library/default.asp?url=/library/en-us/winui/winui/windowsuserinterface/dataexchange.asp
ccchen
版主


發表:61
回覆:940
積分:1394
註冊:2002-04-15

發送簡訊給我
#7 引用回覆 回覆 發表時間:2002-12-27 10:43:00 IP:61.219.xxx.xxx 未訂閱
你可以設計一個Table專門用來在不同系統間傳資料, 例如A系統要傳某些系統給B系統時, 可寫入Table. B系統可在 onIDle時check, 或由A系統Send 一個message通知B 也可以
cyl
中階會員


發表:163
回覆:171
積分:66
註冊:2002-07-11

發送簡訊給我
#8 引用回覆 回覆 發表時間:2002-12-27 10:51:02 IP:61.218.xxx.xxx 未訂閱
引言: 你可以設計一個Table專門用來在不同系統間傳資料, 例如A系統要傳某些系統給B系統時, 可寫入Table. B系統可在 onIDle時check, 或由A系統Send 一個message通知B 也可以
喔!!請問onIDle這是什麼Trigger?那A要如何Send message給B,b要如何接收?? 因為我沒有寫過??
cyl
中階會員


發表:163
回覆:171
積分:66
註冊:2002-07-11

發送簡訊給我
#9 引用回覆 回覆 發表時間:2002-12-27 11:28:25 IP:61.218.xxx.xxx 未訂閱
我參考之前的文章有提到使用BPL http://delphi.ktop.com.tw/topic.php?TOPIC_ID=7348 有位網友的範例程式 http://delphi.ktop.com.tw/topic.php?TOPIC_ID=7348 其中FBPL1如果是連接客戶基本檔,FBPL2如果是連接訂單檔, 如果我在FBPL1中,瀏覽到某一個客戶資料時,想看這個客戶(FBPL2)的訂單檔, 換句話說,Panel2的cursor移動時,panel3的cursor也要跟著動, 架構不變下,我要如何修改這隻範例程式呢??有哪位高有可以指點我一下這些基本觀念??
Julien
一般會員


發表:36
回覆:28
積分:12
註冊:2002-11-28

發送簡訊給我
#10 引用回覆 回覆 發表時間:2002-12-31 09:30:56 IP:210.242.xxx.xxx 未訂閱
引言: Dear All: 我有一個問題,如果我想做一個系統,系統可能未有很多子系統,分屬於不同人撰寫,每個子系統可能會互相傳值以做查詢,每個子系統會是一個專案,請問如果我在A的子系統想傳值給B的系統,是不是要靠外部呼叫執行檔來傳值, 或者說在系統開發的過程中在delphi應該如何規劃撰寫,才可以把每一個系統串聯起來,互相傳遞參數使用呢?? 因為我們現在在開發都是new一個project,裡面可能會有很多系統,但是這樣程式很大而且不能切分成多人撰寫,所以想請問一下規劃設計??
Dear ALL 我們小組目前也開始著手這個問題的作業,不過,是切割現有專案,而不是新作專案.原由是想降低記憶體使用量.拜讀了以上文章,有了以下的問題: 1.首先,若只是為了降低記憶體的使用而切割,不知效果如何? 2.自己雖已參與Delphi設計一年半多,終究非科班出身(在學生時是唸營建系),對很多像Handle等等名詞,還是相當困惑.因此,須找些資料來加強;若對這個系統間傳參數問題與程式上如 > >
andyca
一般會員


發表:0
回覆:6
積分:1
註冊:2002-12-26

發送簡訊給我
#11 引用回覆 回覆 發表時間:2002-12-31 18:37:18 IP:203.66.xxx.xxx 未訂閱
引言: 我們小組目前也開始著手這個問題的作業,不過,是切割現有專案,而不是新作專案.原由是想降低記憶體使用量.拜讀了以上文章,有了以下的問題: 1.首先,若只是為了降低記憶體的使用而切割,不知效果如何? 2.自己雖已參與Delphi設計一年半多,終究非科班出身(在學生時是唸營建系),對很多像Handle等等名詞,還是相當困惑.因此,須找些資料來加強;若對這個系統間傳參數問題與程式上如 > > < face="Verdana, Arial, Helvetica"> 如有不對的地方請指正: BPL,其實就是DLL,把它改成DLL後,可用Dependency Walker看出來它的內容。DLL的好處是各程式共用同一份記憶體的程式碼,Windows會自行處理其他的部份。 程式切開的話,要用到的BPL才會載入,程式理論上佔記憶體會較小,但是要試過才知道,要看程式的寫法和元件的重覆使用性大不大。 Delphi的程式大,主要是因為我們大多是Compile成單一個執行檔,所有的東西都不用DLL (Database/OCX等程式除外),再加上又有RTTI等東西要放進去,程式自然大一些。 Handle,Message Driven等等東西在Windows程式設計的觀念中一定有,看相關的文章就可以了。
andyca
一般會員


發表:0
回覆:6
積分:1
註冊:2002-12-26

發送簡訊給我
#12 引用回覆 回覆 發表時間:2003-01-02 09:56:55 IP:203.66.xxx.xxx 未訂閱
這是用ATOM存資料的Sample: procedure TForm1.Button1Click(Sender: TObject); var aid : Atom; P : PChar; begin // Put string data into ATOM aid := GlobalAddAtom('ATOM data exchange test string'); // Get data from ATOM P := StrAlloc(100); GlobalGetATomName(aid, P, 100); Application.MessageBox(P, 'Atom', MB_OK); StrDispose(P); GlobalDeleteAtom(aid); end;
系統時間:2024-05-12 13:11:58
聯絡我們 | Delphi K.Top討論版
本站聲明
1. 本論壇為無營利行為之開放平台,所有文章都是由網友自行張貼,如牽涉到法律糾紛一切與本站無關。
2. 假如網友發表之內容涉及侵權,而損及您的利益,請立即通知版主刪除。
3. 請勿批評中華民國元首及政府或批評各政黨,是藍是綠本站無權干涉,但這裡不是政治性論壇!