全國最多中醫師線上諮詢網站-台灣中醫網
發文 回覆 瀏覽次數:1022
推到 Plurk!
推到 Facebook!

判斷程式執行時輸入的參數

答題得分者是:justdo
blk5743
高階會員


發表:34
回覆:371
積分:236
註冊:2003-11-17

發送簡訊給我
#1 引用回覆 回覆 發表時間:2004-11-11 09:42:45 IP:61.66.xxx.xxx 未訂閱
請問各位前輩 如果我在執行程式時,有數個參數要輸入,可能有字元,字串及整數 進入程式內要如何切開呢 例如: Notepad 1 2 3 c hello 應該如何把他切成 1 2 3 c hello
zilch
中階會員


發表:5
回覆:87
積分:78
註冊:2002-09-24

發送簡訊給我
#2 引用回覆 回覆 發表時間:2004-11-11 09:57:23 IP:218.166.xxx.xxx 未訂閱
主程式 main() 有兩個引數 argc 與 argv,即函數 main 標題的定義為 main( int argc, char *argv[] ) 其作用是 執行該檔 及 所相隨的 option。 如果將一程式 file.c 編譯完之後, 產生一 執行檔 file.exe。 當執行 file.exe 如 c:> file option1 option2 option3 則執行 file.exe 時, argc 的值為 4, argv 則 含 4 個字串,即 argv[0]="file"、 argv[1]="option1"、 argv[2]="option2"、 argv[3]="option3"。 就您的程式而言 argv[0]="Notepad" argv[1]="1" argv[2]="2" argv[3]="3" argv[4]="c" argv[5]="hello"
blk5743
高階會員


發表:34
回覆:371
積分:236
註冊:2003-11-17

發送簡訊給我
#3 引用回覆 回覆 發表時間:2004-11-11 10:13:35 IP:61.66.xxx.xxx 未訂閱
感謝zilch的回答 我想請問的是,在WINDOWS下,project的主程式會有一個副程式 WINAPI WinMail(HINSTANCE, HINSTANCE, LPSTR,int) 裡面並沒有像傳統程式的 main( int argc, char *argv[] ) 而我知道我船進來的參數會被LPSTR 接走,所以我用一個LPSTR CmdLine CmdLine就會變成 Notepad 1 2 3 c hello雖然我有笨方法把他們切開 不過我想應該會有main( int argc, char *argv[] )的方式 可以知道輸入參數個數及每個參數的內容 不知道Zilch可以解答我這一個疑惑嗎??
pkdemon
初階會員


發表:2
回覆:51
積分:25
註冊:2004-09-13

發送簡訊給我
#4 引用回覆 回覆 發表時間:2004-11-11 11:15:17 IP:211.22.xxx.xxx 未訂閱
blk5743你好,    HRESULT GetArguments(LPTSTR pszArgs,int cchMaxPath);    這個Method應該是你需要的,使用方法請參考MSDN(我有點看不懂) 以下提供一個分割參數的方法 < class="code"> char buff[100], sCmdBuf[10][100]; char *token; int i, nCmdCnt; for ( i = 0 ; lpCmdLine[i] != 0 ; i ) buff[i] = lpCmdLine[i]; buff[i] = 0; token = strtok(buff, " "); nCmdCnt = 0; if (token != NULL) { strcpy(sCmdBuf[nCmdCnt], token); nCmdCnt ; token = strtok(NULL," "); } while (token != NULL) { strcpy(sCmdBuf[nCmdCnt],token); token = strtok(NULL," "); nCmdCnt ; }
justdo
高階會員


發表:2
回覆:359
積分:222
註冊:2004-08-17

發送簡訊給我
#5 引用回覆 回覆 發表時間:2004-11-11 19:27:17 IP:221.169.xxx.xxx 未訂閱
可以使用 ParamCount, ParamStr BCB Example:    
void __fastcall TForm1::FormCreate(TObject *Sender)
{
  for (int i=1;i<=ParamCount();i  )
  {
    if (LowerCase(ParamStr(i)) == "beep")
      Beep(10000,1000);
    elseif (LowerCase(ParamStr(i)) == "exit")
      Application->Terminate();
  }
}
blk5743
高階會員


發表:34
回覆:371
積分:236
註冊:2003-11-17

發送簡訊給我
#6 引用回覆 回覆 發表時間:2004-11-11 19:55:55 IP:61.66.xxx.xxx 未訂閱
感謝各位的協助 不過我最想要的就是JustDo的方式
系統時間:2024-11-22 12:57:30
聯絡我們 | Delphi K.Top討論版
本站聲明
1. 本論壇為無營利行為之開放平台,所有文章都是由網友自行張貼,如牽涉到法律糾紛一切與本站無關。
2. 假如網友發表之內容涉及侵權,而損及您的利益,請立即通知版主刪除。
3. 請勿批評中華民國元首及政府或批評各政黨,是藍是綠本站無權干涉,但這裡不是政治性論壇!