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

有關 ListBox 讀入 顯示的問題

答題得分者是:chtai
alexder
一般會員


發表:3
回覆:4
積分:1
註冊:2003-06-25

發送簡訊給我
#1 引用回覆 回覆 發表時間:2005-03-16 18:03:31 IP:61.57.xxx.xxx 未訂閱
不好意思 請教一下,有關 ListBox 導入 txt 文字檔顯示的問題。 我目前的情況如下 有兩個 ListBox , ListBox1 顯示完整路徑 , ListBox2 只顯示檔名 txt 顯示的例如: 第一行文字為 c:\windows\win.exe 第二行 c:\ati\ati.exe 我想要讀入 ListBox 逐行顯示為 win.exe ,ati.exe 因此我寫了一個 str 逐次導入 然後利用 LastDelimiter("\\") 1; 去判斷, 不過 跑來起來的顯示確是有點問題,請大大 指教一下 void __fastcall Tf13_5_1::BtnOPENClick(TObject *Sender) { String test; String file_name; int lastdelimiter; int length; if (OpenDialog1->Execute()==true) { ListBox1->Items->LoadFromFile(OpenDialog1->FileName); } TStrings* Str = new TStringList(); Str->LoadFromFile(OpenDialog1->FileName); Str->CommaText=Str->Text; for (int i=0;i < Str->Count ; i ) { file_name=Memo1->Lines->Add(Str->Strings[i]); length=file_name.Length(); lastdelimiter=file_name.LastDelimiter("\\") 1; test=file_name.SubString(lastdelimiter,length-lastdelimiter 1); ListBox2->Items->Add(test); } } 發表人 - taishyang 於 2005/03/16 18:22:55
chtai
高階會員


發表:68
回覆:238
積分:116
註冊:2004-05-21

發送簡訊給我
#2 引用回覆 回覆 發表時間:2005-03-16 18:25:59 IP:211.74.xxx.xxx 未訂閱
首先,提醒您程式碼記得要縮排喔 :)    再來,依您的需求,小弟改了一些地方,您可以試看看。
 
void __fastcall Tf13_5_1::BtnOPENClick(TObject *Sender)
{
        if (OpenDialog1->Execute())
        {
                ListBox1->Items = OpenDialog1->Files;                    for (int i = 0; i < ListBox1->Items->Count; i  )
                        ListBox2->Items->Add(ExtractFileName(ListBox1->Items->Strings[i]));
        }
}
這樣應該就可以把完整路徑列在 ListBox1,檔案名稱列在 ListBox2 了。 而且還可以一次選擇多個檔案喔 :) 記得把 OpenDialog1 的屬性調成 MultiSelect. Good luck. -- http://www.csie.nctu.edu.tw/~chtai/software.php 好用免費軟體的收集網頁,歡迎大家跟我分享或一同推廣免費軟體。 若您覺得這網頁不錯,也歡迎您將它傳出去 :) 發表人 - chtai 於 2005/03/16 18:27:08
------
My Web: http://nelson.csie.us
My Blog: http://blog.nelson.csie.us
alexder
一般會員


發表:3
回覆:4
積分:1
註冊:2003-06-25

發送簡訊給我
#3 引用回覆 回覆 發表時間:2005-03-16 22:08:42 IP:61.57.xxx.xxx 未訂閱
感謝提醒! 撰寫確實沒有注意到    有關 大大的方法 也是很好的辦法    後來小弟才發現關鍵的地方應該是    ListBox1->Items->Strings[i]; 接下來就解決了 :) 不好意思 可能小弟的表達能力不佳,小弟的原意是指 讀取 txt 文字檔,裡面都是紀錄 路徑跟檔名,所以是一個檔案裡面可能記錄了很多的 路徑跟檔名,然後要分別顯示 在不同的 ListBox , 一個顯示文字檔裡面 完整的字串,另外一個顯示修正過的字串 後來修改的 語法 void __fastcall Tf13_5_1::BtnOPENClick(TObject *Sender) { String test; String file_name; int lastdelimiter; int length; if (OpenDialog1->Execute()==true) { ListBox1->Items->LoadFromFile(OpenDialog1->FileName); for (int i=0 ; i < ListBox1->Items->Count ; i ) { file_name=ListBox1->Items->Strings[i]; length=file_name.Length(); lastdelimiter=file_name.LastDelimiter("\\") 1; test=file_name.SubString(lastdelimiter,length-lastdelimiter 1); ListBox2->Items->Add(test); } } } 再次的感謝..
chtai
高階會員


發表:68
回覆:238
積分:116
註冊:2004-05-21

發送簡訊給我
#4 引用回覆 回覆 發表時間:2005-03-16 22:42:05 IP:211.74.xxx.xxx 未訂閱
引言: 感謝提醒! 撰寫確實沒有注意到
您還是忘了縮排哩, 詳情請看 http://delphi.ktop.com.tw/topic.php?TOPIC_ID=7326
引言: void __fastcall Tf13_5_1::BtnOPENClick(TObject *Sender) { String test; String file_name; int lastdelimiter; int length; if (OpenDialog1->Execute()==true) { ListBox1->Items->LoadFromFile(OpenDialog1->FileName); for (int i=0 ; i < ListBox1->Items->Count ; i ) { file_name=ListBox1->Items->Strings[i]; length=file_name.Length(); lastdelimiter=file_name.LastDelimiter("\\") 1; test=file_name.SubString(lastdelimiter,length-lastdelimiter 1); ListBox2->Items->Add(test); } } }
或許您沒看到我程式碼裡頭有用到一個函式叫做 ExtractFileName, 它可以幫你取出檔案名稱及副檔名,這樣您就不用自己寫程式去取出囉:p -- http://www.csie.nctu.edu.tw/~chtai/software.php 好用免費軟體的收集網頁,歡迎大家跟我分享或一同推廣免費軟體。 若您覺得這網頁不錯,也歡迎您將它傳出去 :)
------
My Web: http://nelson.csie.us
My Blog: http://blog.nelson.csie.us
alexder
一般會員


發表:3
回覆:4
積分:1
註冊:2003-06-25

發送簡訊給我
#5 引用回覆 回覆 發表時間:2005-03-17 11:45:20 IP:220.135.xxx.xxx 未訂閱
引言: 或許您沒看到我程式碼裡頭有用到一個函式叫做 ExtractFileName, 它可以幫你取出檔案名稱及副檔名,這樣您就不用自己寫程式去取出囉:p
不好意思 小弟那時確實沒有注意到 ExtractFileName , 因為只注意到了 String 經過 大大提醒後 我又重新騰了一下 確實精簡方便多了 , 感恩.. < class="code">if (OpenDialog1->Execute()==true) { ListBox1->Items->LoadFromFile(OpenDialog1->FileName); for (int i=0 ; i < ListBox1->Items->Count ; i ) { ListBox2->Items->Add(ExtractFileName(ListBox1->Items->Strings[i])); } } }
LLP
一般會員


發表:3
回覆:8
積分:2
註冊:2004-12-06

發送簡訊給我
#6 引用回覆 回覆 發表時間:2005-06-08 00:54:45 IP:220.139.xxx.xxx 未訂閱
請問Chtai大大, 我將 ListBox改為Tmemo 並可以一次選擇多個檔案秀在Memo, 但是當我只想真正開啟其中幾個檔案並將選取後的檔名mark,不知是否有好方法??? 請各位大大個忙吧!!謝謝!!
系統時間:2024-11-25 1:42:14
聯絡我們 | Delphi K.Top討論版
本站聲明
1. 本論壇為無營利行為之開放平台,所有文章都是由網友自行張貼,如牽涉到法律糾紛一切與本站無關。
2. 假如網友發表之內容涉及侵權,而損及您的利益,請立即通知版主刪除。
3. 請勿批評中華民國元首及政府或批評各政黨,是藍是綠本站無權干涉,但這裡不是政治性論壇!