zip.ydbファイルをメインメモリのルートフォルダに置かないと郵便番号からの住所表示が動かないことが判明しますたorz
帰ったら直します。
TESTACH のシクロフレームで組んだロードバイクに乗ってます。メンテナンスとかサイクリング日記とか。
PICマイコンを使った電子工作ネタ、電動ラジコンヘリ、Windowsアプリケーション開発とか気が向いたら何でも乗せる見境なしblog。旧ブログタイトルは ヨシヲたんの日記 。
ちょっとわけあってデータベースみたいなプログラムを作っています。
それでファイルの読み書きの際に…
1バイト目:このチャンクの形式(0x01ならインデックスチャンク)
2バイト目〜5バイト目:1番目のインデックス(DWORD)
6バイト目〜9バイト目:2番目のインデックス(DWORD)
(以下略)
のようなデータ形式にしようと思いました。
で、データ領域は BYTE の配列っていうかメモリ領域にします。
BYTE* pIndex = (BYTE*)malloc(9999);
1バイト目はまぁいいでしょう。
pIndex[0] = 0x01;
でも2〜5バイト目のはどうするんだ?と考えてしまった。
要するにDWORD値をBYTEの配列に入れたいわけなのです。
なんというか単純に
DWORD dwData = 0x12345678;
*(DWORD*)(pIndex + 1) = dwData;
とやりたくなってしまうんですが、果たしてこれで良いのか。
多分上記のようにすればバッファには
0x78, 0x56, 0x34, 0x12
のように入ってくれるんだろうけども、これがどの処理系に持っていってもこう動くとは言えない気がかなりしまくります。
(ていうかそもそもBYTEとかDWORDがMFC以外でも使えるのかが疑問な気もしますが)
やっぱりクソ真面目に
pIndex[1] = (BYTE)(dwData & 0xff);
pIndex[2] = (BYTE)((dwData & 0xff00) >> 8);
pIndex[3] = (BYTE)((dwData & 0xff0000) >> 16);
pIndex[4] = (BYTE)((dwData & 0xff000000) >> 24);
とやるべきでしょうか。
うーーん。
とりあえずキャストだとなんだか不安なのでDWORDをBYTEに分解する方法で書くことにします…
でもなんか遅そうw
ヨシヲ