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

ParamCount不同電腦執行的問題

答題得分者是:malanlk
goat
高階會員


發表:53
回覆:130
積分:134
註冊:2002-06-03

發送簡訊給我
#1 引用回覆 回覆 發表時間:2005-07-27 12:40:43 IP:202.168.xxx.xxx 未訂閱
我有一支執行程式,要執行另外一之EXE程式,寫法如下:
var
  sExecStr: string;
begin
  sExecStr := '"' sFileName '" "' ADOConnection1.ConnectionString '"';
  WinExec(pchar(sExecStr), 0);
end;
被呼叫的程式在Create的時候有判斷傳進來的參數有幾個? 但是在不同的電腦執行的時候,卻有ParamCount不一致的情發發生! 因而造成程式判讀錯誤的情形發生? 不知道各位先進,有沒有發生過類似的情形? 感謝!
malanlk
尊榮會員


發表:20
回覆:694
積分:577
註冊:2004-04-19

發送簡訊給我
#2 引用回覆 回覆 發表時間:2005-07-27 13:13:16 IP:203.69.xxx.xxx 未訂閱
ADOConnection1.ConnectionString 長度是多少ㄚ? 會不會太長啦?? 不同的電腦 是指 OS 都一樣而主機不同 還是 OS 也不同??
goat
高階會員


發表:53
回覆:130
積分:134
註冊:2002-06-03

發送簡訊給我
#3 引用回覆 回覆 發表時間:2005-07-27 13:39:29 IP:202.168.xxx.xxx 未訂閱
引言: ADOConnection1.ConnectionString 長度是多少ㄚ? 會不會太長啦?? 不同的電腦 是指 OS 都一樣而主機不同 還是 OS 也不同??
OS都是Windows2000 SP4 ADOConnection1.ConnectionString 的長度太長?會導致每台讀取的ParamCount都不一樣嗎?
malanlk
尊榮會員


發表:20
回覆:694
積分:577
註冊:2004-04-19

發送簡訊給我
#4 引用回覆 回覆 發表時間:2005-07-27 14:25:47 IP:203.69.xxx.xxx 未訂閱
如果 command 太長, 最後一個雙引號被截掉 (執行檔的目錄不一樣) 參數就會大不同了....不過還是推測, 有待證實.
malanlk
尊榮會員


發表:20
回覆:694
積分:577
註冊:2004-04-19

發送簡訊給我
#5 引用回覆 回覆 發表時間:2005-07-27 14:42:53 IP:203.69.xxx.xxx 未訂閱
Stallion
版主


發表:52
回覆:1600
積分:1995
註冊:2004-09-15

發送簡訊給我
#6 引用回覆 回覆 發表時間:2005-07-27 17:57:44 IP:211.22.xxx.xxx 未訂閱
寫過一個類似的程式,可以分辨不同的作業系統來決定參數的給法,請參考! < class="code"> var VerInfo: TOSVersionInfo; si:TSTARTUPINFO; pi:TPROCESSINFORMATION; VerInfo.dwOSVersionInfoSize := SizeOf(TOSVersionInfo); GetVersionEx(VerInfo); if VerInfo.dwPlatformId = VER_PLATFORM_WIN32_NT then begin if not CreateProcess(nil,PChar( '"' ProgramPath '"' CommandLine ),nil,nil,false,0,nil,nil,si,pi) then begin MessageBox(GetActiveWindow(),PChar( '啟動程式失敗'),'啟動錯誤',MB_OK or MB_ICONERROR); exit; end; end else begin if not CreateProcess(PChar( '"' ProgramPath '"'),PChar(CommandLine),nil,nil,false,0,nil,nil,si,pi) then begin MessageBox(GetActiveWindow(),PChar( '啟動程式失敗'),'啟動錯誤',MB_OK or MB_ICONERROR); exit; end; end; //ProgramPath 是執行程式的完整路經包含程式名稱 //CommandLine 是是多個參數形成的字串 ------------------- 學,然後知不足。 發表人 - stallion 於 2005/07/27 17:59:17
goat
高階會員


發表:53
回覆:130
積分:134
註冊:2002-06-03

發送簡訊給我
#7 引用回覆 回覆 發表時間:2005-07-27 17:59:55 IP:202.168.xxx.xxx 未訂閱
終於找到原因了,兇手是ADOConnection1.ConnectionString?!    因為某些電腦上面產生出來的ConnectionString會有類似以下的情形(紅色字體) Extended Properties="Use Encryption for Data=False;Tag with column collation when possible=False";Use Procedure for Prepare=1; 雖然我在傳參數的時候有使用雙引號包住,但是卻被上述的部分打亂了,導致接到的ParamCount會有不一樣的情形發生。 個人初步判斷,應該是MDAC版本不一樣所產生的...←求證中。 特別感謝malanlk及Stallion兩位兄台的熱心回應! 發表人 -
系統時間:2024-11-23 13:18:29
聯絡我們 | Delphi K.Top討論版
本站聲明
1. 本論壇為無營利行為之開放平台,所有文章都是由網友自行張貼,如牽涉到法律糾紛一切與本站無關。
2. 假如網友發表之內容涉及侵權,而損及您的利益,請立即通知版主刪除。
3. 請勿批評中華民國元首及政府或批評各政黨,是藍是綠本站無權干涉,但這裡不是政治性論壇!