@weather 晴時々曇 @title あさ〜 @category 生活 @s 4:00AM充電開始、10:00AM再起動。 @title RegSetValueEx() @category プログラム @s Win32のAPIにRegSetValueEx()というのがある。レジストリに値を登録するためのものなのだが、こいつの引数にひとつ落とし穴があったりする。本日某所で、「この引数を間違えていた」という話題が。 @s このAPIの第4引数「dwType」がREG_SZのとき、第6引数「cbData」は「\0を含めたバッファ長さを与えること」とされている。つまり、このAPIでレジストリに"aaa"という文字列を登録するとき、第6引数は「lstrlen("aaa")+1」を与えないといけないわけ。で、この"+1"が曲者。 @s もし「+1を忘れた」とき。Win95系だと「レジストリにはバッファ長の文字列+"\0"を書く」という動作になっているらしい。対してWinNT系だと「レジストリにはバッファ長の文字列だけを書く」という感じ。このへんはMSDNのRegSetValue()の項に明記されている。 @s で、これを読むときに問題になるわけで。Win95だとRegQueryValueEx()で読んだとき、Win95系だと「\0を付けたデータを返す」が、WinNTだと「\0を付けないデータを返す」ことになる。つまり、NT系だと「文字列の末尾はどこでしょう」状態なわけで。何が来るかわからん以上、RegQueryValueEx()のバッファの末尾は\0で潰す癖をつけておいたほうがいいかもしれない。 @title ぐるぐる @category ぐるぐる @s ごうちゃ経由で@/ASIN/B00027X4EK,でじこミュニケーション2/の体験版。ファーストプレイで「お仕事カードぜんぜん引けなくてボロ負け」が2連荘。シャッフル悪いぞ・・・(ぉぃ)。 @s 殺すの、なーし(笑)。