有關 ListBox 讀入 顯示的問題 |
答題得分者是:chtai
|
alexder
一般會員 發表:3 回覆:4 積分:1 註冊:2003-06-25 發送簡訊給我 |
不好意思 請教一下,有關 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 發送簡訊給我 |
首先,提醒您程式碼記得要縮排喔 :) 再來,依您的需求,小弟改了一些地方,您可以試看看。
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 發送簡訊給我 |
感謝提醒! 撰寫確實沒有注意到 有關 大大的方法 也是很好的辦法 後來小弟才發現關鍵的地方應該是 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 發送簡訊給我 |
引言: 感謝提醒! 撰寫確實沒有注意到您還是忘了縮排哩, 詳情請看 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 發送簡訊給我 |
引言: 或許您沒看到我程式碼裡頭有用到一個函式叫做 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 發送簡訊給我 |
本站聲明 |
1. 本論壇為無營利行為之開放平台,所有文章都是由網友自行張貼,如牽涉到法律糾紛一切與本站無關。 2. 假如網友發表之內容涉及侵權,而損及您的利益,請立即通知版主刪除。 3. 請勿批評中華民國元首及政府或批評各政黨,是藍是綠本站無權干涉,但這裡不是政治性論壇! |