調用exe文件時,怎樣傳參數? |
尚未結案
|
dialog
一般會員 發表:33 回覆:18 積分:10 註冊:2002-09-07 發送簡訊給我 |
|
timhuang
尊榮會員 發表:78 回覆:1815 積分:1608 註冊:2002-07-15 發送簡訊給我 |
|
Justmade
版主 發表:94 回覆:1934 積分:2030 註冊:2003-03-12 發送簡訊給我 |
Connection 元件不能在兩個程式中共享,ConnectionString 還可以傳 exe1 執行 exe2 :
exe1 :
ShellExexute(0,'open','exe2.exe',PChar(ADOConnection.ConnectionString),nil,1); exe2 :
AdoDataSet.ConnectionString := ParamStr[1];
AdoDataSet.Active := true; 哈,出文時未見 timhuang 兄的回文 ,大家所見略同耶 發表人 - Justmade 於 2003/05/14 14:15:59
|
Rain
資深會員 發表:31 回覆:236 積分:268 註冊:2003-02-17 發送簡訊給我 |
前不久在做一个系统的时候有处理过这个问题,即把主程序的连接字符串传递给一个数据库恢复程序,你可以参考看看:
因为ConnectString字符串长度太长,如果把整个ConnectString做为一个参数是无法正常传递的,好象这个限制比较大,
几十个字节大小的都不可以,所以把整个字符串分成几个参数传递,在你的exe1.exe中调用代码
var
xPath: PChar; xPath := PChar(ExtractFilePath(Application.ExeName) 'exe2.exe');
WinExec(PChar(xPath ' ' '密码参数' ' ' '用户名参数'
' ' '数据库名称参数' ' ' '数据库服务器参数'), SW_SHOW);
注:如果是空参数,传递字符串'--',参数与参数之间用空格隔开 exe2.exe取得参数 const
X_LinkSQL: string =
'Provider=SQLOLEDB.1;Password=%s;Persist Security Info=True;'
'User ID=%s;Initial Catalog=%s;Data Source=%s';
NullParam = '--'; var
sPassword, sUserID, sDBName, sAlias: string;
begin
if ParamCount > 0 then
begin
with ADOQX do
begin
if Active then Close;
if ParamStr(1) = NullParam then sPassword := '' else sPassword := ParamStr(1);
if ParamStr(2) = NullParam then sUserID := '' else sUserID := ParamStr(2);
if ParamStr(3) = NullParam then sDBName := '' else sDBName := ParamStr(3);
if ParamStr(4) = NullParam then sAlias := '' else sAlias := ParamStr(4);
ConnectionString := Format(X_LinkSQL, [sPassword, sUserID, sDBName, sAlias]);
end;
end;
end;
|
Rain
資深會員 發表:31 回覆:236 積分:268 註冊:2003-02-17 發送簡訊給我 |
//抱歉,網站的自動轉碼功能好像一直有問題,只得重新貼一遍了 前不久在做一個系統的時候有處理過這個問題,即把主程序的連接字串傳遞給一個資料庫恢復程式,你可以參考看看:
因為ConnectString字串長度太長,如果把整個ConnectString做為一個參數是無法正常傳遞的,好象這個限制比較大,
幾十個位元組大小的都不可以,所以把整個字串分成幾個參數傳遞,在你的exe1.exe中調用代碼
var
xPath: PChar; xPath := PChar(ExtractFilePath(Application.ExeName) 'exe2.exe');
WinExec(PChar(xPath ' ' '密碼參數' ' ' '用戶名參數'
' ' '資料庫名稱參數' ' ' '資料庫伺服器參數'), SW_SHOW);
注:如果是空參數,傳遞字串'--',參數與參數之間用空格隔開 exe2.exe取得參數 const
X_LinkSQL: string =
'Provider=SQLOLEDB.1;Password=%s;Persist Security Info=True;'
'User ID=%s;Initial Catalog=%s;Data Source=%s';
NullParam = '--'; var
sPassword, sUserID, sDBName, sAlias: string;
begin
if ParamCount > 0 then
begin
with ADOQX do
begin
if Active then Close;
if ParamStr(1) = NullParam then sPassword := '' else sPassword := ParamStr(1);
if ParamStr(2) = NullParam then sUserID := '' else sUserID := ParamStr(2);
if ParamStr(3) = NullParam then sDBName := '' else sDBName := ParamStr(3);
if ParamStr(4) = NullParam then sAlias := '' else sAlias := ParamStr(4);
ConnectionString := Format(X_LinkSQL, [sPassword, sUserID, sDBName, sAlias]);
end;
end;
end;
|
dialog
一般會員 發表:33 回覆:18 積分:10 註冊:2002-09-07 發送簡訊給我 |
|
Justmade
版主 發表:94 回覆:1934 積分:2030 註冊:2003-03-12 發送簡訊給我 |
|
Mickey
版主 發表:77 回覆:1882 積分:1390 註冊:2002-12-11 發送簡訊給我 |
本站聲明 |
1. 本論壇為無營利行為之開放平台,所有文章都是由網友自行張貼,如牽涉到法律糾紛一切與本站無關。 2. 假如網友發表之內容涉及侵權,而損及您的利益,請立即通知版主刪除。 3. 請勿批評中華民國元首及政府或批評各政黨,是藍是綠本站無權干涉,但這裡不是政治性論壇! |