請問如何讓工作目錄設定在新增的資料夾 |
答題得分者是:herbert2
|
kirei6989
一般會員 發表:16 回覆:13 積分:5 註冊:2011-04-14 發送簡訊給我 |
請問各位大大:
以下是我的程式片斷,主要是要去讓DirectoryListBox在新增資料夾時,就可以讓Current設定到新資料夾, 而不是還停留在新增資料夾的上ㄧ層。 我使用了SetCurrentDir為什麼還是不行呢?是不是我誤解了SetCurrent的意思了。 //------------------------------------------------------------- AnsiString Fname; DirectoryListBox1->OpenCurrent(); int D_index = DirectoryListBox1->ItemIndex; Label1->Caption = DirectoryListBox1->GetItemPath(D_index); Fname = Label1->Caption; String InputString = InputBox(" 新增工作目錄", "請輸入工作目錄名稱: ", ""); if (!DirectoryExists(InputString)){ if (CreateDir(InputString)){ D_index=D_index 1; DirectoryListBox1->Update(); Fname=DirectoryListBox1->GetItemPath(D_index); SetCurrentDir(Fname); DirectoryListBox1->OpenCurrent(); DirectoryListBox1->DirLabel = Label1; } else ShowMessage("Cannot create " InputString ); } |
herbert2
尊榮會員 發表:58 回覆:640 積分:894 註冊:2004-04-16 發送簡訊給我 |
DirectoryListBox1->DirLabel = Label1; // 宜在 FormCreate 便設定
AnsiString Fname; DirectoryListBox1->OpenCurrent(); int D_index = DirectoryListBox1->ItemIndex; // Label1->Caption = DirectoryListBox1->GetItemPath(D_index); // 已指定 DirLabel 便自動會 Show // Fname = Label1->Caption; String InputString; // AnsiString 勿於宣告時便給值, 避 BCB 之 BUG InputString = InputBox(" 新增工作目錄", "請輸入工作目錄名稱: ", ""); // 注意: InputString 要區分開頭為 "d:\" 或無 "d:\" 之狀況 if (InputString.SubString(2,1) == ":") Fname = InputString; else Fname = Label1->Caption "\\" InputString; // if (!DirectoryExists(InputString)){ if (!DirectoryExists(Fname)){ // if (CreateDir(InputString)){ if (CreateDir(Fname)){ // D_index=D_index 1; // 您憑那份文件說新增者之 Index 必然是此值 ? DirectoryListBox1->Update(); // DirectoryListBox1 的 ItemIndex 不會因新增 Dir 而自動變到新增的 Dir 上 // Fname=DirectoryListBox1->GetItemPath(D_index); // 您會得到反白的那筆, 這是錯誤的寫法 SetCurrentDir(Fname); // 若 Fname 是正確的, 則這句是成功執行的, // 但因 DirectoryListBox1->ItemIndex 未變動, // 故您的 Fname 並非是剛新增的那個 String sxStr; sxStr = ExtractFileName(Fname); // 只能找最右邊的 Dir Name, 故借用 ExtractFileName 將 "d:\dir1\....\" 去掉 D_index = DirectoryListBox1->Items->IndexOf(sxStr); if (D_index >= 0) { DirectoryListBox1->ItemIndex = D_index; DirectoryListBox1->OpenCurrent(); // DirectoryListBox1->DirLabel = Label1; // 改在 FormCreate 時就設定 } else ShowMessage("Cannot create " InputString ); } } 您尚不熟稔 C Builder 的元件的 Property, 則可插入 ShowMessage() 檢查所取得之值, 便能找到您錯誤的地方了. 當然, 用 Break Point 或逐步執行, 檢查各時點各變數的值, 是更佳的 Debug 方式.
編輯記錄
herbert2 重新編輯於 2011-05-06 09:24:16, 註解 無‧
|
aftcast
站務副站長 發表:81 回覆:1485 積分:1763 註冊:2002-11-21 發送簡訊給我 |
請教一下herbert2,你說的這bug,我沒聽過或注意過。
如果不能,那這不是小小的bug,算是一個極大的bug。我一直以來使用上都沒遇到問題。 是怎麼一回事呢? ===================引 用 herbert2 文 章=================== String InputString; // AnsiString 勿於宣告時便給值, 避 BCB 之 BUG
------
蕭沖 --All ideas are worthless unless implemented-- C++ Builder Delphi Taiwan G+ 社群 http://bit.ly/cbtaiwan |
herbert2
尊榮會員 發表:58 回覆:640 積分:894 註冊:2004-04-16 發送簡訊給我 |
這是 BCB5 不穩定的問題, 別的版本或許 OK.
因約八年前曾發生莫明的問題, 經與朋有討論, 他在 Google 日文網站找到這方面的討論, 並認定這是 BCB5 的 BUG. 經改成宣告與給值分開後就 OK 了. 另 BCB5 尚有另一狀況: int = (double)int * double 會有意外的結果. Ex. : int = (double)5 * 1.4 得 6. 但 BCB3, BCB4, BCB6 都得 7. 改成 double = (double)int * double, 再 int = double 就會正確. iR = (double)5 * 1.4 得 6, nR = (double)5*1.4 = 6.9999..., int iR = nR 得 7. ===================引 用 aftcast 文 章=================== 請教一下herbert2,你說的這bug,我沒聽過或注意過。 如果不能,那這不是小小的bug,算是一個極大的bug。我一直以來使用上都沒遇到問題。 是怎麼一回事呢? |
aftcast
站務副站長 發表:81 回覆:1485 積分:1763 註冊:2002-11-21 發送簡訊給我 |
謝謝,瞭解了! ^^
你們繼續這個原題目吧,我把問題離題了! ===================引 用 herbert2 文 章=================== 這是 BCB5 不穩定的問題, 別的版本或許 OK. 因約八年前曾發生莫明的問題, 經與朋有討論, 他在 Google 日文網站找到這方面的討論, 並認定這是 BCB5 的 BUG. 經改成宣告與給值分開後就 OK 了. 另 BCB5 尚有另一狀況: int = (double)int * double 會有意外的結果. Ex. : int = (double)5 * 1.4 得 6. 但 BCB3, BCB4, BCB6 都得 7. 改成 double = (double)int * double, 再 int = double 就會正確. iR = (double)5 * 1.4 得 6, nR = (double)5*1.4 = 6.9999..., int iR = nR 得 7.
------
蕭沖 --All ideas are worthless unless implemented-- C++ Builder Delphi Taiwan G+ 社群 http://bit.ly/cbtaiwan |
kirei6989
一般會員 發表:16 回覆:13 積分:5 註冊:2011-04-14 發送簡訊給我 |
本站聲明 |
1. 本論壇為無營利行為之開放平台,所有文章都是由網友自行張貼,如牽涉到法律糾紛一切與本站無關。 2. 假如網友發表之內容涉及侵權,而損及您的利益,請立即通知版主刪除。 3. 請勿批評中華民國元首及政府或批評各政黨,是藍是綠本站無權干涉,但這裡不是政治性論壇! |