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

呼叫外部程式問題

答題得分者是:taishyang
阿鬼就是我
一般會員


發表:4
回覆:7
積分:2
註冊:2008-02-16

發送簡訊給我
#1 引用回覆 回覆 發表時間:2008-02-18 20:14:24 IP:122.116.xxx.xxx 訂閱
各位前輩,您好


我想要呼叫外部程式,寫在按鈕物件下
參數寫法就像:


void __fastcall TForm1::Button1Click(TObject *Sender)
{
cmd = "c:\\windows\\AnisoDiff.exe c:\\windows\\House512.bmp c:\\windows\\House512.bmp 5 100 0.25 1";

}

[C Error] Unit1.cpp(54): E2451 Undefined symbol 'cmd'
[ C 錯誤] Unit1.cpp(54): E2451 未定義的符號' cmd '

我看的書C builder6 有介紹
WinExec("....." , NULL) 的方式,不過還是搞不懂該怎麼借鑑


問題 , cmd 該怎麼定義呢?應該在哪裡定義?

謝謝
------
嫩的我,需要多多曬太陽
taishyang
站務副站長


發表:377
回覆:5490
積分:4563
註冊:2002-10-08

發送簡訊給我
#2 引用回覆 回覆 發表時間:2008-02-18 20:29:42 IP:118.169.xxx.xxx 訂閱
1.cmd的資料型態是什麼?
2.請先搜尋舊文章


===================引 用 阿鬼就是我 文 章===================
各位前輩,您好


我想要呼叫外部程式,寫在按鈕物件下
參數寫法就像:


void __fastcall TForm1::Button1Click(TObject *Sender)
{
cmd = "c:\\windows\\AnisoDiff.exe c:\\windows\\House512.bmp c:\\windows\\House512.bmp 5 100 0.25 1";

}

[C Error] Unit1.cpp(54): E2451 Undefined symbol 'cmd'
[ C 錯誤] Unit1.cpp(54): E2451 未定義的符號' cmd '

我看的書C builder6 有介紹
WinExec("....." , NULL) 的方式,不過還是搞不懂該怎麼借鑑


問題 , cmd 該怎麼定義呢?應該在哪裡定義?

謝謝
阿鬼就是我
一般會員


發表:4
回覆:7
積分:2
註冊:2008-02-16

發送簡訊給我
#3 引用回覆 回覆 發表時間:2008-02-18 20:35:01 IP:122.116.xxx.xxx 訂閱
感謝副站長 給提示,
我應該怎麼收尋,我需要的資料





===================引 用 taishyang 文 章===================
1.cmd的資料型態是什麼?
2.請先搜尋舊文章


===================引 用 阿鬼就是我 文 章===================
各位前輩,您好


我想要呼叫外部程式,寫在按鈕物件下
參數寫法就像:


void __fastcall TForm1::Button1Click(TObject *Sender)
{
cmd = "c:\\windows\\AnisoDiff.exe c:\\windows\\House512.bmp c:\\windows\\House512.bmp 5 100 0.25 1";

}

[C Error] Unit1.cpp(54): E2451 Undefined symbol 'cmd'
[ C 錯誤] Unit1.cpp(54): E2451 未定義的符號' cmd '

我看的書C builder6 有介紹
WinExec("....." , NULL) 的方式,不過還是搞不懂該怎麼借鑑


問題 , cmd 該怎麼定義呢?應該在哪裡定義?

謝謝
------
嫩的我,需要多多曬太陽
編輯記錄
阿鬼就是我 重新編輯於 2008-02-18 20:40:13, 註解 無‧
taishyang
站務副站長


發表:377
回覆:5490
積分:4563
註冊:2002-10-08

發送簡訊給我
#4 引用回覆 回覆 發表時間:2008-02-18 22:26:00 IP:118.169.xxx.xxx 訂閱
你要用WinExec,所以就先以這個為關鍵字,若資料太多,多加一些"關鍵字"過濾
當你用google查資料時,文章過多怎麼辦? 意思是一樣的


===================引 用 阿鬼就是我 文 章===================
感謝副站長 給提示,
我應該怎麼收尋,我需要的資料


阿鬼就是我
一般會員


發表:4
回覆:7
積分:2
註冊:2008-02-16

發送簡訊給我
#5 引用回覆 回覆 發表時間:2008-02-19 11:25:25 IP:122.116.xxx.xxx 訂閱
您好,

用按鈕呼叫外部程式AnisoDiff.exe ,
有一各地方一直試不出來。


#include
#pragma hdrstop
#include "Unit1.h"
//---------------------------------------------------------------------------
#pragma package(smart_init)
#pragma resource "*.dfm"
TForm1 *Form1;
//---------------------------------------------------------------------------
void TForm1::RunExtCmd(AnsiString cmd)
{
STARTUPINFO si;
PROCESS_INFORMATION pi;
ZeroMemory( &si, sizeof(si) );
si.cb = sizeof(si);
ZeroMemory( &pi, sizeof(pi) );
// Start the child process.
if( !CreateProcess( NULL, // No module name (use command line).
cmd.c_str(), // Command line.
NULL, // Process handle not inheritable.
NULL, // Thread handle not inheritable.
FALSE, // Set handle inheritance to FALSE.
DETACHED_PROCESS, // No creation flags.
NULL, // Use parent's environment block.
NULL, // Use parent's starting directory.
&si, // Pointer to STARTUPINFO structure.
&pi ) // Pointer to PROCESS_INFORMATION structure.
)
{
//ErrorExit( "CreateProcess failed." );
}
// Wait until child process exits.
WaitForSingleObject( pi.hProcess, INFINITE );
// Close process and thread handles.
CloseHandle( pi.hProcess );
CloseHandle( pi.hThread );
}


//---------------------------------------------------------------------------
void __fastcall TForm1::Button1Click(TObject *Sender)
{
AnsiString cmd = new AnsiString("c:\\WINDOWS\\AnisoDiff.exe c:\\WINDOWS\\House512.bmp c:\\windows\\House512.bmp 5 100 0.25 1");
RunExtCmd (cmd); //這一段的問題 [C Error] Unit1.cpp(54): E2034 Cannot convert 'AnsiString *' to 'AnsiString'

//改成這樣
AnsiString cmd = new AnsiString("c:\\WINDOWS\\AnisoDiff.exe" , "c:\\WINDOWS\\House512.bmp" , "c:\\windows\\House512.bmp" , 5 100 0.25 1);
RunExtCmd (cmd);

//j問題更多[
//C Error] Unit1.cpp(55): E2293 ) expected
//[C Error] Unit1.cpp(55): E2285 Could not find a match for 'AnsiString::AnsiString(char *,char *,char *,int)'
//[C Error] Unit1.cpp(55): E2034 Cannot convert 'AnsiString *' to 'AnsiString'

//錯在AnsiString cmd = new AnsiString 吧,不過卻不知道該怎麼下手

}
//---------------------------------------------------------------------------
------
嫩的我,需要多多曬太陽
編輯記錄
阿鬼就是我 重新編輯於 2008-02-19 11:47:38, 註解 無‧
阿鬼就是我 重新編輯於 2008-02-19 12:04:42, 註解 無‧
taishyang
站務副站長


發表:377
回覆:5490
積分:4563
註冊:2002-10-08

發送簡訊給我
#6 引用回覆 回覆 發表時間:2008-02-19 11:52:17 IP:118.169.xxx.xxx 訂閱
你知不知道你寫的程式碼的意思(我指的是錯誤的那一段)?
阿鬼就是我
一般會員


發表:4
回覆:7
積分:2
註冊:2008-02-16

發送簡訊給我
#7 引用回覆 回覆 發表時間:2008-02-19 12:09:19 IP:122.116.xxx.xxx 訂閱
taishyang 您好 ,

我想表達的是 AnsiString cmd 可以等於 new AnsiString
不過這樣好像沒有辦法呼叫出執行檔。
後面在 RunExtCmd (cmd);
我把它改成這樣,可以執行,按button會有訊息通知缺少libmmfile.dll 這個是我缺檔案嗎?

AnsiString cmd = ("c:\\WINDOWS\\AnisoDiff.exe c:\\WINDOWS\\House512.bmp c:\\windows\\House512.bmp 5 100 0.25 1");
RunExtCmd (cmd);




重新將AnisoDiff.exe下載就沒問題了。感謝讓我發問,雖然執行上還是有問題



=====引 用 taishyang 文 章===================
你知不知道你寫的程式碼的意思(我指的是錯誤的那一段)?

------
嫩的我,需要多多曬太陽
編輯記錄
阿鬼就是我 重新編輯於 2008-02-19 12:31:55, 註解 無‧
阿鬼就是我 重新編輯於 2008-02-19 13:13:48, 註解 無‧
阿鬼就是我 重新編輯於 2008-02-19 13:34:24, 註解 無‧
阿鬼就是我 重新編輯於 2008-02-19 14:12:02, 註解 無‧
系統時間:2024-04-16 13:36:10
聯絡我們 | Delphi K.Top討論版
本站聲明
1. 本論壇為無營利行為之開放平台,所有文章都是由網友自行張貼,如牽涉到法律糾紛一切與本站無關。
2. 假如網友發表之內容涉及侵權,而損及您的利益,請立即通知版主刪除。
3. 請勿批評中華民國元首及政府或批評各政黨,是藍是綠本站無權干涉,但這裡不是政治性論壇!