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

請教一下使用API SetVolumeLabel上的問題

尚未結案
快被打死的小強
一般會員


發表:1
回覆:2
積分:0
註冊:2004-07-30

發送簡訊給我
#1 引用回覆 回覆 發表時間:2004-08-18 18:56:23 IP:61.219.xxx.xxx 未訂閱
小弟在使用SetVolumeLabel這個API時,輸入的LABLE名稱為小寫, 但使用GetVolumeInformation取回Lable時卻發現取回的名稱全部為大寫, 看說明沒有提到大小寫要如何設定, 請教一下是否有人也遇到這個問題,是否有解呢, 順代一提, 小弟使用的OS 是 XP,語言是BCB 6 先感謝各位花時間看這個問題啦~~~ 快被打死的小強~~~~
------
快被打死的小強~~~~
andychang1690
資深會員


發表:20
回覆:694
積分:442
註冊:2003-03-14

發送簡訊給我
#2 引用回覆 回覆 發表時間:2004-08-19 00:42:23 IP:219.132.xxx.xxx 未訂閱
引言: 小弟在使用SetVolumeLabel這個API時,輸入的LABLE名稱為小寫, 但使用GetVolumeInformation取回Lable時卻發現取回的名稱全部為大寫, 看說明沒有提到大小寫要如何設定, 請教一下是否有人也遇到這個問題,是否有解呢, 順代一提, 小弟使用的OS 是 XP,語言是BCB 6 先感謝各位花時間看這個問題啦~~~ 快被打死的小強~~~~
{
  AnsiString DIR_NAME="d:\\",volumeName="andydisk_d";
  bool success;
  success=SetVolumeLabel(DIR_NAME.c_str(), volumeName.c_str());
  if (success)
    Label1->Caption="OK";
  char lpVolName[255],lpFSNameBuff[50];
  DWORD dwVolSer, lpMaxComLen, lpFSFlags;
  if (GetVolumeInformationA(DIR_NAME.c_str(), lpVolName, 255, &dwVolSer,
  &lpMaxComLen, &lpFSFlags, lpFSNameBuff, 50))
    Label2->Caption=lpVolName; // 得到andydisk_d
}
我使用XP,BCB5.0確定沒問題!
Andy Chang 發表人 - andychang1690 於 2004/08/19 00:50:28
------
Andy Chang
快被打死的小強
一般會員


發表:1
回覆:2
積分:0
註冊:2004-07-30

發送簡訊給我
#3 引用回覆 回覆 發表時間:2004-08-19 09:43:37 IP:61.219.xxx.xxx 未訂閱
啊,少寫一個內容,小弟是使用這個API去改 可移除式磁碟的標籤, 使用這個API去改local 磁碟的標籤時是ok 只是用來改像是大姆哥,記憶卡的label時會發生這個問題, 抱歉,沒有說清楚 快被打死的小強~~~~
------
快被打死的小強~~~~
andychang1690
資深會員


發表:20
回覆:694
積分:442
註冊:2003-03-14

發送簡訊給我
#4 引用回覆 回覆 發表時間:2004-08-19 10:08:54 IP:219.132.xxx.xxx 未訂閱
小強:
BOOL GetVolumeInformation(        LPCTSTR lpRootPathName,        // address of root directory of the file system 
    LPTSTR lpVolumeNameBuffer,        // address of name of the volume 
    DWORD nVolumeNameSize,        // length of lpVolumeNameBuffer 
    LPDWORD lpVolumeSerialNumber,        // address of volume serial number 
    LPDWORD lpMaximumComponentLength,        // address of system's maximum filename length
    LPDWORD lpFileSystemFlags,        // address of file system flags 
    LPTSTR lpFileSystemNameBuffer,        // address of name of file system 
    DWORD nFileSystemNameSize         // length of lpFileSystemNameBuffer 
   );
例:
GetVolumeInformationA(DIR_NAME.c_str(), lpVolName, 255, &dwVolSer,
  &lpMaxComLen, &lpFSFlags, lpFSNameBuff, 50))    lpFileSystemNameBuffer
你檢查一下你磁碟機的型態是NTFS還是FAT?
在MS-DOS和Windows95中,磁片卷標最多由11個字元組成,並且字母的大小寫不加區分。    請參考!
Andy Chang
------
Andy Chang
快被打死的小強
一般會員


發表:1
回覆:2
積分:0
註冊:2004-07-30

發送簡訊給我
#5 引用回覆 回覆 發表時間:2004-08-19 10:15:42 IP:61.219.xxx.xxx 未訂閱
感謝Andy 兄,是小弟的錯,完全忘了是FAT的問題, 唉,因為可以在檔案總管上修改是有大小寫分別, 而且就算移除後再置入,大小寫的標籤還是在, 總算知道了,下次會小心, 感恩啦~~~~~~ 快被打死的小強~~~~
------
快被打死的小強~~~~
系統時間:2024-04-29 2:56:32
聯絡我們 | Delphi K.Top討論版
本站聲明
1. 本論壇為無營利行為之開放平台,所有文章都是由網友自行張貼,如牽涉到法律糾紛一切與本站無關。
2. 假如網友發表之內容涉及侵權,而損及您的利益,請立即通知版主刪除。
3. 請勿批評中華民國元首及政府或批評各政黨,是藍是綠本站無權干涉,但這裡不是政治性論壇!