系統間參數傳遞問題 |
缺席
|
cyl
中階會員 發表:163 回覆:171 積分:66 註冊:2002-07-11 發送簡訊給我 |
|
andyca
一般會員 發表:0 回覆:6 積分:1 註冊:2002-12-26 發送簡訊給我 |
|
cyl
中階會員 發表:163 回覆:171 積分:66 註冊:2002-07-11 發送簡訊給我 |
|
ccchen
版主 發表:61 回覆:940 積分:1394 註冊:2002-04-15 發送簡訊給我 |
可以有好幾種方式考慮
1. 直接用Winexec, ShellExecute或CreateProcess等執行外部程式方法, 可以傳參數.--最方便使用.如果你只是呼叫時傅參數, 不是執行中還要有參數來往, 如此做應該足夠 2. 共同讀取一外部檔. 3. 用ShareMemory(其實這只是通稱,在Win32並不是真的ShareMemory,而是共用一Memory Map的機制), Implement不難,但觀念抽象些, 如果真有此需要, 我可以寫個例子給你看.
不過能避免就避免吧, 其實透過資料庫使用共同Data更理想
|
cyl
中階會員 發表:163 回覆:171 積分:66 註冊:2002-07-11 發送簡訊給我 |
引言: 可以有好幾種方式考慮 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 發送簡訊給我 |
引言:我用的都是懶方法... 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引言: 參考一下: 程式都在同一台電腦執行時 你可以使用IPC,COM或是Windos messages 不同台時: 可以考慮用DCOM,不同台電腦要協同做一件或是一系列有系統的工作時,最好要有一個主控制的電腦,和寫Multi-Tier的程式差不多吧。 最重要的是界面要先定好...什麼是IPC?不需要到Multi-Tier,我只是想要開發單人使用的程式,但是會有很多系統,每個系統又有一點相關,每個系統可能又是不同仁開發,所以想請教如何開發系統才能把不同人的系統串聯起來?? |
ccchen
版主 發表:61 回覆:940 積分:1394 註冊:2002-04-15 發送簡訊給我 |
|
cyl
中階會員 發表:163 回覆:171 積分:66 註冊:2002-07-11 發送簡訊給我 |
|
cyl
中階會員 發表:163 回覆:171 積分:66 註冊:2002-07-11 發送簡訊給我 |
我參考之前的文章有提到使用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 發送簡訊給我 |
引言: Dear All: 我有一個問題,如果我想做一個系統,系統可能未有很多子系統,分屬於不同人撰寫,每個子系統可能會互相傳值以做查詢,每個子系統會是一個專案,請問如果我在A的子系統想傳值給B的系統,是不是要靠外部呼叫執行檔來傳值, 或者說在系統開發的過程中在delphi應該如何規劃撰寫,才可以把每一個系統串聯起來,互相傳遞參數使用呢?? 因為我們現在在開發都是new一個project,裡面可能會有很多系統,但是這樣程式很大而且不能切分成多人撰寫,所以想請問一下規劃設計??Dear ALL 我們小組目前也開始著手這個問題的作業,不過,是切割現有專案,而不是新作專案.原由是想降低記憶體使用量.拜讀了以上文章,有了以下的問題: 1.首先,若只是為了降低記憶體的使用而切割,不知效果如何? 2.自己雖已參與Delphi設計一年半多,終究非科班出身(在學生時是唸營建系),對很多像Handle等等名詞,還是相當困惑.因此,須找些資料來加強;若對這個系統間傳參數問題與程式上如 > > |
andyca
一般會員 發表:0 回覆:6 積分:1 註冊:2002-12-26 發送簡訊給我 |
引言: 我們小組目前也開始著手這個問題的作業,不過,是切割現有專案,而不是新作專案.原由是想降低記憶體使用量.拜讀了以上文章,有了以下的問題: 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 發送簡訊給我 |
這是用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;
|
本站聲明 |
1. 本論壇為無營利行為之開放平台,所有文章都是由網友自行張貼,如牽涉到法律糾紛一切與本站無關。 2. 假如網友發表之內容涉及侵權,而損及您的利益,請立即通知版主刪除。 3. 請勿批評中華民國元首及政府或批評各政黨,是藍是綠本站無權干涉,但這裡不是政治性論壇! |