線上訂房服務-台灣趴趴狗聯合訂房中心
發文 回覆 瀏覽次數:3444
推到 Plurk!
推到 Facebook!

如何秀出 Unicode 的檔名?

尚未結案
chtai
高階會員


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

發送簡訊給我
#1 引用回覆 回覆 發表時間:2005-12-06 18:51:00 IP:210.64.xxx.xxx 未訂閱
大家好: 我的問題是這樣的,現在我有個資料夾底下有不少的檔案跟目錄, 檔名有繁簡中日英韓德法義...等多國文字。    我想請問的是, 要如何取得這些檔案跟目錄的名稱,並把它們顯示在 RichEdit 裡?    以前我取得檔名的作法如下,接下來要怎麼辦呢 ?
 
    WIN32_FIND_DATA filedata;  // Structure for file data
    HANDLE filehandle;         // Handle for searching
    filehandle = FindFirstFile((Dir   "\\*.*").c_str(), &filedata);        if (filehandle != INVALID_HANDLE_VALUE)
    {
        do
        {
            /* do something.... */
        } while (FindNextFile(filehandle, &filedata)) ;
        FindClose(filehandle) ;
    }
-- http://www.csie.nctu.edu.tw/~chtai/software.php 好用免費軟體的收集網頁
------
My Web: http://nelson.csie.us
My Blog: http://blog.nelson.csie.us
jeff377
初階會員


發表:9
回覆:60
積分:33
註冊:2004-08-10

發送簡訊給我
#2 引用回覆 回覆 發表時間:2005-12-06 23:05:36 IP:211.75.xxx.xxx 未訂閱
你可以參考「TntWare Delphi Unicode Controls」,它可以支援unicode檔名。    http://www.tntware.com/delphicontrols/unicode/ 發表人 - jeff377 於 2005/12/06 23:06:27
leon_sun_1
一般會員


發表:1
回覆:2
積分:0
註冊:2005-06-30

發送簡訊給我
#3 引用回覆 回覆 發表時間:2005-12-07 11:49:52 IP:60.248.xxx.xxx 未訂閱
1.試試看我的方式,請先使用MultiByteToWideChar函式將路徑轉成Unicode。 2.再依紅字部分修改 
引言: WIN32_FIND_DATAW filedata; // Structure for file data HANDLE filehandle; // Handle for searching filehandle = FindFirstFileW((Dir "\\*.*").c_str(), &filedata); if (filehandle != INVALID_HANDLE_VALUE) { do { /* do something.... */ } while (FindNextFileW(filehandle, &filedata)) ; FindClose(filehandle) ; }
chtai
高階會員


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

發送簡訊給我
#4 引用回覆 回覆 發表時間:2005-12-07 13:08:59 IP:211.78.xxx.xxx 未訂閱
引言: 1.試試看我的方式,請先使用MultiByteToWideChar函式將路徑轉成Unicode。 2.再依紅字部分修改
引言: WIN32_FIND_DATAW filedata; // Structure for file data HANDLE filehandle; // Handle for searching filehandle = FindFirstFileW((Dir "\\*.*").c_str(), &filedata); if (filehandle != INVALID_HANDLE_VALUE) { do { /* do something.... */ } while (FindNextFileW(filehandle, &filedata)) ; FindClose(filehandle) ; }
想請問一下, 1. 要怎麼用 MultiByteToWideChar 呢 ? 在這個例子裡,轉出來的東西是存在哪個變數呢 ? 2. FindNextFileW 這個函式我在 MSDN 找不到耶,BCB 的 help 裡頭也沒有,請問這需要 include 什麼嗎? 3. 要怎麼把找到的名稱放到 RichEdit 裡頭呢,有需要再做什麼轉換嗎 ? 謝謝 -- http://www.csie.nctu.edu.tw/~chtai/software.php 好用免費軟體的收集網頁
------
My Web: http://nelson.csie.us
My Blog: http://blog.nelson.csie.us
leon_sun_1
一般會員


發表:1
回覆:2
積分:0
註冊:2005-06-30

發送簡訊給我
#5 引用回覆 回覆 發表時間:2005-12-07 14:35:57 IP:61.56.xxx.xxx 未訂閱
 
    WCHAR wDir[1024];
    int nLenOfWideCharStr;
    WideString Dir;        nLenOfWideCharStr = MultiByteToWideChar(CP_ACP, 0, &buf[1], -1, NULL, 0); 
    MultiByteToWideChar(CP_ACP, 0, &buf[1], -1, wDir, nLenOfWideCharStr);        Dir = wDir;
    filehandle = FindFirstFileW((Dir   "\\*.*").c_bstr(), &filedata);        if 
    {
        do
        {
        ....
        } while (FindNextFileW(filehandle, &filedata));
        FindClose(filehandle) ;
    }
1. MultiByteToWideChar建議使用兩次,第一次取得要轉換WCHAR的長度,第二次才是真正轉換。轉換的值是存在上述wDir裡。 2. 至於FindNextFileW,是BCB裡的函式,定義在winbase.h裡,你可以在BCB裡用滑鼠游標指到函式名稱上然後再按滑鼠右鍵會出現PopupMenu,點選第一項Find Declaration,就會跳出winbase.h的頁面。 3. 至於您第三個問題須自行製作一個可以顯示Unicode的RichEdit或是安裝tntunicodecontrols裡面的RichEdit。
conundrum
尊榮會員


發表:893
回覆:1272
積分:643
註冊:2004-01-06

發送簡訊給我
#6 引用回覆 回覆 發表時間:2005-12-07 14:37:50 IP:218.175.xxx.xxx 未訂閱
可以參考看看 http://delphi.ktop.com.tw/topic.php?TOPIC_ID=79237 KTOP的UNICODE問答約有589筆 http://delphi.ktop.com.tw/quicksearch.exe/quicksearch?SearchStr=UNICODE 看一下也可以有意外發現    網友大大 請問你的作品,文章等 是否願意貢獻 給於KTOP網站,日後使用於DVD/VCD發售 如果可以請在簽名檔上宣告個人授權 以加速KTOP網站日後DVD/VCD資料的誕生 台灣災難都是事後算帳 無人飛行載具(Unmanned Aerial Vehicle,UAV)為什麼沒大量應用於救災行列 絲絲有2種 .net有很多種 一種治眼睛是MS 另一種治腦筋是Borland
Dennies
一般會員


發表:1
回覆:12
積分:2
註冊:2006-07-27

發送簡訊給我
#7 引用回覆 回覆 發表時間:2007-09-17 11:38:39 IP:220.130.xxx.xxx 訂閱
這個問題應該要分成兩個層次來看:
1. 資料層次.
2. 顯示層次.

您用了 FindFirstFileW, FindNextFileW 來找到 Unicode 的檔案名稱之後,
RichEdit 還是無法正確顯示的. 您必須要找到能顯示 Unicode 的元件, 才能
把這些找到的 Unicode 檔案名稱顯示上去的.

我個人是以 TntUnicodeControls (tntWares 的前身) 作了幾個 tntListView 的
加強功能, 來作到接近您這個問題的解答.
系統時間:2024-11-24 11:08:35
聯絡我們 | Delphi K.Top討論版
本站聲明
1. 本論壇為無營利行為之開放平台,所有文章都是由網友自行張貼,如牽涉到法律糾紛一切與本站無關。
2. 假如網友發表之內容涉及侵權,而損及您的利益,請立即通知版主刪除。
3. 請勿批評中華民國元首及政府或批評各政黨,是藍是綠本站無權干涉,但這裡不是政治性論壇!