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

程式與程式之間的合併問題

尚未結案
orz
一般會員


發表:2
回覆:1
積分:0
註冊:2004-12-19

發送簡訊給我
#1 引用回覆 回覆 發表時間:2004-12-19 18:38:34 IP:211.72.xxx.xxx 未訂閱
請問各位大大: 我現在如果設計兩個程式比方說我設計了傳訊息程式以及視訊程式 現在我要將兩個程式做合併 該怎麼去做呢?? 我的意思是說我再傳訊的程式中需要用到視訊的程式的時候,有個BUTTON作為 呼叫的媒介我要如何去呼叫他 前提兩個程式是獨立的 若無法獨立去做呼叫需要合併的話 我該怎麼合併 我沒寫過兩個視窗之間的程式我該如何解決此問題呢???? 請各位大大給予指點或是舉例說明 謝謝^^
qqmax
一般會員


發表:17
回覆:26
積分:8
註冊:2004-11-22

發送簡訊給我
#2 引用回覆 回覆 發表時間:2004-12-20 01:21:22 IP:211.76.xxx.xxx 未訂閱
我也有同樣的疑惑耶 我有很多獨立的程式但是享用一個介面來做勾通的橋樑 不過我不會把這些獨立的程式作合併 可否請板上的各位高手提供這方面的解惑呢???? 不然我做的程式永遠也無法合併成一個>"< THX!!
rogan321
高階會員


發表:21
回覆:307
積分:200
註冊:2003-05-15

發送簡訊給我
#3 引用回覆 回覆 發表時間:2004-12-20 03:30:29 IP:203.204.xxx.xxx 未訂閱
Hi!! orz&qqmax 兩獨立的程式傳值可用WINAPI32的CreateFileMapping()~~做個簡單的範例~
 
//傳送資料的程式
#include 
#pragma hdrstop
#include "Unit2.h"
//--------------------------------------------------------------------
#pragma package(smart_init)
#pragma resource "*.dfm"
TForm1 *Form1;
char* mapData;
//--------------------------------------------------------------------
__fastcall TForm1::TForm1(TComponent* Owner)
        : TForm(Owner)
{
HANDLE Handle=CreateFileMapping((HANDLE)0xFFFFFFFF,0,PAGE_READWRITE,0,1024,"mappingObject");
//再記憶體中建立一塊共享的區塊
mapData=(char*)MapViewOfFile(Handle,FILE_MAP_ALL_ACCESS,0,0,0);
//將mapData變數對應到該區塊
}
//--------------------------------------------------------------------
void __fastcall TForm1::Button1Click(TObject *Sender)
{
 lstrcpy(mapData,(Edit1->Text).c_str());
//傳遞Data給該變數
}
//--------------------------------------------------------------------    //接收資料的獨立程式
#include 
#pragma hdrstop
#include "Unit1.h"
//--------------------------------------------------------------------
#pragma package(smart_init)
#pragma resource "*.dfm"
TForm1 *Form1;
char* mapData;
//--------------------------------------------------------------------
__fastcall TForm1::TForm1(TComponent* Owner)
        : TForm(Owner)
{
 HANDLE Handle=OpenFileMapping(FILE_MAP_ALL_ACCESS,false,"mappingObject");
//打開傳送資料程式所建立的Mapping
 if(Handle==0)
  {......   }
//若記憶體中沒有共用的區塊,處理之.也可不處理只是將收不到資料
 mapData=(char*)MapViewOfFile(Handle,FILE_MAP_ALL_ACCESS,0,0,0);
}
//--------------------------------------------------------------------
void __fastcall TForm1::Button1Click(TObject *Sender)
{
Memo1->Lines->Add(mapData);
//得到目前在該區塊的資料放置Memo中
}
//--------------------------------------------------------------------    
qqmax
一般會員


發表:17
回覆:26
積分:8
註冊:2004-11-22

發送簡訊給我
#4 引用回覆 回覆 發表時間:2004-12-20 05:12:32 IP:211.76.xxx.xxx 未訂閱
引言: Hi!! orz&qqmax 兩獨立的程式傳值可用WINAPI32的CreateFileMapping()~~做個簡單的範例~
 
//傳送資料的程式
#include 
#pragma hdrstop
#include "Unit2.h"
//--------------------------------------------------------------------
#pragma package(smart_init)
#pragma resource "*.dfm"
TForm1 *Form1;
char* mapData;
//--------------------------------------------------------------------
__fastcall TForm1::TForm1(TComponent* Owner)
        : TForm(Owner)
{
HANDLE Handle=CreateFileMapping((HANDLE)0xFFFFFFFF,0,PAGE_READWRITE,0,1024,"mappingObject");
//再記憶體中建立一塊共享的區塊
mapData=(char*)MapViewOfFile(Handle,FILE_MAP_ALL_ACCESS,0,0,0);
//將mapData變數對應到該區塊
}
//--------------------------------------------------------------------
void __fastcall TForm1::Button1Click(TObject *Sender)
{
 lstrcpy(mapData,(Edit1->Text).c_str());
//傳遞Data給該變數
}
//--------------------------------------------------------------------    //接收資料的獨立程式
#include 
#pragma hdrstop
#include "Unit1.h"
//--------------------------------------------------------------------
#pragma package(smart_init)
#pragma resource "*.dfm"
TForm1 *Form1;
char* mapData;
//--------------------------------------------------------------------
__fastcall TForm1::TForm1(TComponent* Owner)
        : TForm(Owner)
{
 HANDLE Handle=OpenFileMapping(FILE_MAP_ALL_ACCESS,false,"mappingObject");
//打開傳送資料程式所建立的Mapping
 if(Handle==0)
  {......   }
//若記憶體中沒有共用的區塊,處理之.也可不處理只是將收不到資料
 mapData=(char*)MapViewOfFile(Handle,FILE_MAP_ALL_ACCESS,0,0,0);
}
//--------------------------------------------------------------------
void __fastcall TForm1::Button1Click(TObject *Sender)
{
Memo1->Lines->Add(mapData);
//得到目前在該區塊的資料放置Memo中
}
//--------------------------------------------------------------------    
謝謝您的講解^^ 但是我有個疑問就是說我現在兩個程式要在DESIGN的時候如何合成一個 要怎麼合併,我完全不曉得???是要匯入什麼東西呢還是???? 兩個都有他的.CPP和.H還有它獨立的Form就像是主程式(介面)上有多個按鈕按下去就可以呼叫另個程式之類的可以做到這個是要如何去做呢??? 謝謝您^^!!
Jiahong1012
一般會員


發表:7
回覆:17
積分:9
註冊:2004-11-05

發送簡訊給我
#5 引用回覆 回覆 發表時間:2004-12-20 11:03:42 IP:218.163.xxx.xxx 未訂閱
qqmax: 你可以在BCB裡,選擇"Project"-> "Add Existing project" 即可
rogan321
高階會員


發表:21
回覆:307
積分:200
註冊:2003-05-15

發送簡訊給我
#6 引用回覆 回覆 發表時間:2004-12-20 14:16:08 IP:203.204.xxx.xxx 未訂閱
qqmax
一般會員


發表:17
回覆:26
積分:8
註冊:2004-11-22

發送簡訊給我
#7 引用回覆 回覆 發表時間:2004-12-21 05:59:39 IP:211.76.xxx.xxx 未訂閱
引言: qqmax: 你可以在BCB裡,選擇"Project"-> "Add Existing project" 即可
我用您的方法會入之後 原來的.cpp檔名會變為main.cpp 那位什麼compile的時候會變成惠入的程式出現那第一個程式呢???
qqmax
一般會員


發表:17
回覆:26
積分:8
註冊:2004-11-22

發送簡訊給我
#8 引用回覆 回覆 發表時間:2004-12-21 06:02:01 IP:211.76.xxx.xxx 未訂閱
引言: Hi~orz 請參考~ http://delphi.ktop.com.tw/topic.php?topic_id=56164
請問一下 1.以ProjectA當成你主要的Project. 2.將ProjectB裡面的Unit1.cpp和Unit1.h複製到ProjectA的資料夾內. 3.於ProjectA中,[Project]->[Add to Project]->選擇加入Unit1.cpp和Unit1.h 4.決定你的mainForm是哪一個. PS.請注意你的兩個Project裡面的名字是否一樣,如果都是Unit1的話,那複製之前請改一下名字,以免被覆蓋. 連結的方法 但是第二個程式的Form並不會跟著傳入吧 指光有.cpp和.h就可以了嗎????
rogan321
高階會員


發表:21
回覆:307
積分:200
註冊:2003-05-15

發送簡訊給我
#9 引用回覆 回覆 發表時間:2004-12-21 16:10:36 IP:203.204.xxx.xxx 未訂閱
引言: 連結的方法 但是第二個程式的Form並不會跟著傳入吧 指光有.cpp和.h就可以了嗎????
每組有使用到Form的cpp都會有一組UnitX.dfm請一同處理
系統時間:2024-05-19 13:03:56
聯絡我們 | Delphi K.Top討論版
本站聲明
1. 本論壇為無營利行為之開放平台,所有文章都是由網友自行張貼,如牽涉到法律糾紛一切與本站無關。
2. 假如網友發表之內容涉及侵權,而損及您的利益,請立即通知版主刪除。
3. 請勿批評中華民國元首及政府或批評各政黨,是藍是綠本站無權干涉,但這裡不是政治性論壇!