討論區快速選單
知識庫快速選單
討論區最近新進100則主題 程式設計俱樂部Facebook粉絲團
[ 回上頁 ] [ 討論區發言規則 ]
使用RegSetValueEx的問題
更改我的閱讀文章字型大小
作者 : wang3529(兔妹) 貼文超過200則人氣指數超過10000點
[ 貼文 307 | 人氣 27736 | 評價 50 | 評價/貼文 0.16 | 送出評價 36 次 ] 
[ 給個讚 ]  [ 給個讚 ]  [ 回應本文 ]  [ 發表新文 ]  [ 回上頁 ] [ 回討論區列表 ] [ 回知識入口 ]
2009/10/20 下午 04:50:40
我想要在HKEY_CURRENT_USER\\Software\\Poker\\底下
建一個叫做Define的文件 內容放目前系統時間例如"2009/10/15(4)10:9:3"
底下是我的做法
 HKEY hk;
 char szBuf[80];
 SYSTEMTIME Time;
 GetLocalTime(&Time);
 LPDWORD lpdw;
 RegCreateKeyEx(HKEY_CURRENT_USER,
TEXT("Software\\Poker\\"),0,NULL
,REG_OPTION_NON_VOLATILE,0,NULL, &hk,lpdw);

sprintf(szBuf,"%d/%d/%d(%d)%d:%d:%",Time.wYear,Time.wMonth,Time.wDay,Time.wDayOfWeek,Time.wHour,Time.wMinute,Time.wSecond);
RegSetValueEx(hk, // subkey handle
TEXT("Define"), // value name
     0, // must be zero
REG_EXPAND_SZ, // value type
     (LPBYTE)szBuf, // pointer to value data
     strlen(szBuf) + 1); // length of value data
RegFlushKey(hk);
RegCloseKey(hk);
結果Define有建立起來
但是資料部分卻寫著(22 length binary value)
滑鼠點2下想看Define內容會出現unknown type的錯誤訊息
請問要怎麼改才能達到我想要的內容?
作者 : channelayu(ChannelAyu) eVC優秀好手
[ 貼文 199 | 人氣 195 | 評價 850 | 評價/貼文 4.27 | 送出評價 0 次 ] 
[ 給個讚 ]  [ 給個讚 ]  [ 回應本文 ]  [ 發表新文 ]  [ 回上頁 ] [ 回討論區列表 ] [ 回知識入口 ]
2009/10/21 上午 09:51:51
szBuf用wide char
strlen記得改成wcslen
作者 : wang3529(兔妹) 貼文超過200則人氣指數超過10000點
[ 貼文 307 | 人氣 27736 | 評價 50 | 評價/貼文 0.16 | 送出評價 36 次 ] 
[ 給個讚 ]  [ 給個讚 ]  [ 回應本文 ]  [ 發表新文 ]  [ 回上頁 ] [ 回討論區列表 ] [ 回知識入口 ]
2009/10/21 下午 02:58:14

>szBuf用wide char
>strlen記得改成wcslen
我用這樣直接指定szBuf內容是ok的
WCHAR *szBuf =L"2009/10/15(4)10:9:3";
RegSetValueEx(hk, TEXT("Define"), 0,REG_SZ, (BYTE*)wallpaper,sizeof(TCHAR)*(wcslen(wallpaper)+1));
但是如果改成
WCHAR *szBuf;
fwprintf(szBuf,L"%d/%d/%d(%d)%d:%d:%",Time.wYear,Time.wMonth,Time.wDay,Time.wDayOfWeek,Time.wHour,Time.wMinute,Time.wSecond);
出來的結果卻是亂碼 請問這用法哪裡錯了呢?
作者 : wang3529(兔妹) 貼文超過200則人氣指數超過10000點
[ 貼文 307 | 人氣 27736 | 評價 50 | 評價/貼文 0.16 | 送出評價 36 次 ] 
[ 給個讚 ]  [ 給個讚 ]  [ 回應本文 ]  [ 發表新文 ]  [ 回上頁 ] [ 回討論區列表 ] [ 回知識入口 ]
2009/10/21 下午 03:06:18

>
>>szBuf用wide char
>>strlen記得改成wcslen
>我用這樣直接指定szBuf內容是ok的
>WCHAR *szBuf =L'2009/10/15(4)10:9:3';
>RegSetValueEx(hk, TEXT('Define'), 0,REG_SZ, (BYTE*)wallpaper,sizeof(TCHAR)*(wcslen(wallpaper)+1));
>但是如果改成
>WCHAR *szBuf;
>fwprintf(szBuf,L'%d/%d/%d(%d)%d:%d:%',Time.wYear,Time.wMonth,Time.wDay,Time.wDayOfWeek,Time.wHour,Time.wMinute,Time.wSecond);
>出來的結果卻是亂碼 請問這用法哪裡錯了呢?
>
原來應該用swprintf才對 寫錯指令了
作者 : channelayu(ChannelAyu) eVC優秀好手
[ 貼文 199 | 人氣 195 | 評價 850 | 評價/貼文 4.27 | 送出評價 0 次 ] 
[ 給個讚 ]  [ 給個讚 ]  [ 回應本文 ]  [ 發表新文 ]  [ 回上頁 ] [ 回討論區列表 ] [ 回知識入口 ]
2009/10/21 下午 04:18:14
會不會是NULL結尾的問題呢
array用ZeroMemory之類的
pointer用new delete先配置
也可以用debug看看format後的字串是否確實
不正確的NULL結尾也影響長度計算
 板主 : 徵求中
 > WinCE/eVC - 討論區
 - 最近熱門問答精華集
 - 全部歷史問答精華集
 - WinCE/eVC - 知識庫
  ■ 全站最新Post列表
  ■ 我的文章收藏
  ■ 我最愛的作者
  ■ 全站文章收藏排行榜
  ■ 全站最愛作者排行榜
  ■  月熱門主題
  ■  季熱門主題
  ■  熱門主題Top 20
  ■  本區Post排行榜
  ■  本區評價排行榜
  ■  全站專家名人榜
  ■  全站Post排行榜
  ■  全站評價排行榜
  ■  全站人氣排行榜
 請輸入關鍵字 
  開始搜尋
 
Top 10
評價排行
WinCE/eVC
1 ChannelAyu 800 
2 770 
3 jonathan321 380 
4 lzx 220 
5 house 220 
6 ohyajack 160 
7 joe 130 
8 =悠= 120 
9 2338998 110 
10 阿偉 100 
WinCE/eVC
  專家等級 評價  
  一代宗師 10000  
  曠世奇才 5000  
  頂尖高手 3000  
  卓越專家 1500  
  優秀好手 750  
Microsoft Internet Explorer 6.0. Screen 1024x768 pixel. High Color (16 bit).
2000-2018 程式設計俱樂部 http://www.programmer-club.com.tw/
3.100586E-02