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

設定"bin檔"選擇程式路徑問題?

尚未結案
KENI_LIN
中階會員


發表:86
回覆:267
積分:90
註冊:2004-05-31

發送簡訊給我
#1 引用回覆 回覆 發表時間:2005-06-14 10:14:42 IP:210.80.xxx.xxx 未訂閱
找了很久,沒找到類似此問題的討論區,在這裡請教一下各位: 這是做下載*.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

發送簡訊給我
#2 引用回覆 回覆 發表時間:2005-06-14 12:35:21 IP:219.136.xxx.xxx 未訂閱
KENI_LIN 您好:    可否請您說明一下 asDaFileName 是什麼東西?您的後續處理又是怎麼寫的 (是什麼樣的程式敘述未能達到您預期的結果)?
KENI_LIN
中階會員


發表:86
回覆:267
積分:90
註冊:2004-05-31

發送簡訊給我
#3 引用回覆 回覆 發表時間:2005-06-14 13:58:07 IP:210.80.xxx.xxx 未訂閱
謝謝"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

發送簡訊給我
#4 引用回覆 回覆 發表時間:2005-06-14 14:51:10 IP:210.68.xxx.xxx 未訂閱
您好: 不知您是不是缺少
.c_str()
這轉換的動作? 順心
RedSnow
版主


發表:79
回覆:1322
積分:845
註冊:2003-12-15

發送簡訊給我
#5 引用回覆 回覆 發表時間:2005-06-14 16:20:20 IP:219.136.xxx.xxx 未訂閱
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

發送簡訊給我
#6 引用回覆 回覆 發表時間:2005-06-14 17:54:57 IP:210.80.xxx.xxx 未訂閱
謝謝兩位的回覆,很抱歉不能講的太明細,我搜尋了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

發送簡訊給我
#7 引用回覆 回覆 發表時間:2005-06-14 18:34:44 IP:219.136.xxx.xxx 未訂閱
KENI_LIN 您好:    我試著以您提供的資訊寫了一個自定函式做測試,結果仍是沒啥問題發生,可否請您將執行時的錯誤訊息以及與執行該動作有關的程式敘述 (從設定、開檔直到發生錯誤的相關敘述即可,但是請儘量節錄連續而完整的敘述) 一併貼上來? 7 天天敲鍵盤 v 時時按滑鼠 8
KENI_LIN
中階會員


發表:86
回覆:267
積分:90
註冊:2004-05-31

發送簡訊給我
#8 引用回覆 回覆 發表時間:2005-06-15 09:48:39 IP:210.80.xxx.xxx 未訂閱
引言: 可否請您將執行時的錯誤訊息以及與執行該動作有關的程式敘述 (從設定、開檔直到發生錯誤的相關敘述即可,但是請儘量節錄連續而完整的敘述) 一併貼上來?
這...真的很困難:; 一難:這是"某家"知名的廠商給我的
------
Keni Lin
RedSnow
版主


發表:79
回覆:1322
積分:845
註冊:2003-12-15

發送簡訊給我
#9 引用回覆 回覆 發表時間:2005-06-15 14:20:49 IP:219.137.xxx.xxx 未訂閱
KENI_LIN 您好:    您大概是誤會了,我原先根本就不知道您有那個函式的原始碼,因此我所說的是您自己寫的部份,以及執行時所產生的錯誤訊息,錯誤訊息通常也能提供一定的參考價值。 既然您有該函式的原始碼,那麼您應該可以試著以除錯模式對程式追蹤一下,看看兩種設定方式呼叫那個函式之前的參數內容是否相同?以及進入該函式後的處理流程,看看是那一個動作或是設定導致了兩種不同呼叫參數所產生結果的差異? 7 天天敲鍵盤 v 時時按滑鼠 8
系統時間:2024-05-07 11:47:33
聯絡我們 | Delphi K.Top討論版
本站聲明
1. 本論壇為無營利行為之開放平台,所有文章都是由網友自行張貼,如牽涉到法律糾紛一切與本站無關。
2. 假如網友發表之內容涉及侵權,而損及您的利益,請立即通知版主刪除。
3. 請勿批評中華民國元首及政府或批評各政黨,是藍是綠本站無權干涉,但這裡不是政治性論壇!