投稿日 | : 2006/02/26(Sun) 10:09 |
投稿者 | : gt |
URL | : |
タイトル | : Re^6: 構造体配列転送 |
Blueさん
ご回答ありがとう。
> // 日本語ロケーションを設定
> setlocale( LC_ALL, "Japanese" );
setlocale( LC_ALL, "Japanese" );という関数が知らなかった、
これを入れるとうまく表示できました。(他には、参照しながらやっていました)
> アライメントを考慮しないと、VBの構造体との位置がずれてしまいますよ。
> VB側では 4バイト ずつだと思ったので、
> typedef struct
> {
> short ID;
> short flag;
> BSTR Name;
> } SysData_LAY;
> のようにしないといけないような。
これが知らなかったのですが、
でも、一つ疑問があります、
VB側、文字列のナンバーが複数の場合、(固定長、不定長がある場合)
どう並べるのでしょうか。
この例だと
BSTR Name;
BSTR Name2[10];
BSTR Name3;
BSTR Name4;
で、
BSTR Name2[10];
BSTR Name;
BSTR BSTR Name3;
BSTR Name4;
にするのでしょうか。
> # というか、VBでshort型どうやって設定するんだっけ?
>
VBでshort型 => C側 short型
VBでInteger型 => C側 short型
VBでLong型 => C側 Long型
VBでSingle型 => C側 float型
VBでDouble型 => C側 Double型
そうやっていますが、やっぱりいけないですね、バイト数が考えていないです。
> 色々めんどくさいので、Cとの連携を考えるときは、VBではLong型、Cではint型で扱ったほうが無
難で
す。
> (どちらも4バイト)
はい、これからlong型にします。ありがとう。
よろしくお願いします。