設定"bin檔"選擇程式路徑問題? |
尚未結案
|
KENI_LIN
中階會員 發表:86 回覆:267 積分:90 註冊:2004-05-31 發送簡訊給我 |
找了很久,沒找到類似此問題的討論區,在這裡請教一下各位:
這是做下載*.bin檔的程式,我用固定路徑的方式是沒問題,
目的是將路徑的da.bin檔丟入asDaFileName裡面.
asDaFileName = "D:\\Project\\DT_Tool\\da.bin"; 現在我要做自由選擇路徑的方式,建立了一個OpenDialog如下:
void __fastcall TForm1::Button1Click(TObject *Sender) { String da; da=""; if(OpenDialog1->Execute()) Edit1->Text = (OpenDialog1->FileName); da = (OpenDialog1->FileName); }並把剛剛的程式改為asDaFileName = da;,結果還是不行,程式會有找不到da.bin的訊息出現! 是不是我觀念錯誤不能這樣使用,還是有其它能做到開啟*.bin路徑方法? 寒窗苦讀十年書;只待今朝狀元時!~~ ︵ / / ︵ ( ∩ ∩ ) ○ ︶ ○ Keni Lin
------
Keni Lin |
RedSnow
版主 發表:79 回覆:1322 積分:845 註冊:2003-12-15 發送簡訊給我 |
|
KENI_LIN
中階會員 發表:86 回覆:267 積分:90 註冊:2004-05-31 發送簡訊給我 |
謝謝"RedSnow"兄的指教,請參考以下原始程式,因為並不是我做的(修改階段),所以我現在也在試著了解"asDaFileName"是什麼東西?
#ifndef _DA_INFO_H_ #define _DA_INFO_H_ #define DA_INFO_FILE_DA "da.bin" #endif //Load DA.Bin asDaFileName = DA_INFO_FILE_DA; if(asDaFileName.AnsiCompareIC("") != 0) { if(DA_LoadByFilepath(g_DA_HANDLE, asDaFileName.c_str()) != FTHND_OK) { ShowMessage("ERROR: Load Download Agent Failed"); return; } }所以現在只是很單純的把它(da.bin)變成可以選擇路徑的方式來控制,而不是程式#define DA_INFO_FILE_DA "da.bin"寫死路徑名稱在裡面. 寒窗苦讀十年書;只待今朝狀元時!~~ ︵ / / ︵ ( ∩ ∩ ) ○ ︶ ○ Keni Lin
------
Keni Lin |
taishyang
站務副站長 發表:377 回覆:5490 積分:4563 註冊:2002-10-08 發送簡訊給我 |
|
RedSnow
版主 發表:79 回覆:1322 積分:845 註冊:2003-12-15 發送簡訊給我 |
KENI_LIN 您好: 以您提供的資訊來看,DA_INFO_FILE_DA 僅是一個預先定義好的字串而已,而 asDaFileName 雖然沒有看到它的宣告敘述,但是由它具備 AnsiCompareIC() 函式功能來看,它應該是一個 AnsiString,那麼將一個字串值設給一個 AnsiString 變數,這並無任何特別之處,若是使用 OpenDialog->FileName 來設給 asDaFileName 再來開啟檔案,應該也沒啥問題啊? 您提供的都是個別的程式片斷,不是一個完整而連續的敘述,因此我仍然僅能用猜的:您的意思是不是像下列這個樣子,但是卻無法載入檔案?
AnsiString asDaFileName = DA_INFO_FILE_DA; if(OpenDialog1->Execute()){ String da = OpenDialog1->FileName; asDaFileName = da; } if(asDaFileName.AnsiCompareIC("") != 0) { // 這裡做載入檔案的動作 }我使用上述的流程,配合 Memo 物件是可以載入檔案 (以一個文字檔重命名為 da.bin 來模擬的) 的,因此若是您的流程大致如上,那麼我猜想問題應該是出在 DA_LoadByFilepath() 函式,如果您能進一步提供該函式的相關資料,或許比較容易找出問題來....。 |
KENI_LIN
中階會員 發表:86 回覆:267 積分:90 註冊:2004-05-31 發送簡訊給我 |
謝謝兩位的回覆,很抱歉不能講的太明細,我搜尋了DA_LoadByFilepath()函式在這目錄下的所有程式碼,只有找到這段(是一個*.h)檔案.有相同的名稱:
typedef struct { char filepath[256]; unsigned int start_addr; unsigned char *buf; unsigned int buf_len; }DA_INFO; struct DA_HANDLE; typedef struct DA_HANDLE * DA_HANDLE_T; extern int __stdcall DA_Create(DA_HANDLE_T *p_da_handle); extern int __stdcall DA_Destroy(DA_HANDLE_T *p_da_handle); . .//這些點意思表示不相關的定義程式,避免佔篇幅我就簡化刪除. . extern int __stdcall DA_LoadByFilepath(DA_HANDLE_T da_handle, const char *da_filepath); . . extern int __stdcall DA_AutoLoadByCustomName(DA_HANDLE_T da_handle, const char *custom_name)我也會試著從.c_str()這轉換的動作?方向找起;本來以為只要能做到修改路徑名稱的方式就可以解決,果然我想的太簡單了! 不知道以上的extern int __stdcall DA_LoadByFilepath(DA_HANDLE_T da_handle, const char *da_filepath);是否有什麼特殊涵義? 寒窗苦讀十年書;只待今朝狀元時!~~ ︵ / / ︵ ( ∩ ∩ ) ○ ︶ ○ Keni Lin
------
Keni Lin |
RedSnow
版主 發表:79 回覆:1322 積分:845 註冊:2003-12-15 發送簡訊給我 |
|
KENI_LIN
中階會員 發表:86 回覆:267 積分:90 註冊:2004-05-31 發送簡訊給我 |
|
RedSnow
版主 發表:79 回覆:1322 積分:845 註冊:2003-12-15 發送簡訊給我 |
本站聲明 |
1. 本論壇為無營利行為之開放平台,所有文章都是由網友自行張貼,如牽涉到法律糾紛一切與本站無關。 2. 假如網友發表之內容涉及侵權,而損及您的利益,請立即通知版主刪除。 3. 請勿批評中華民國元首及政府或批評各政黨,是藍是綠本站無權干涉,但這裡不是政治性論壇! |