PB 電子会議室

コメント

発言No. 更新日 題名(クリックすると発言内容と関連するコメントが表示されます)
16180 01/09/04 10:02:12 RE(13):PB7.0: 外部関数の引数に構造体メンバを持つ構造体の使用 By ryochan
16178 01/09/03 20:00:48 RE(12):PB7.0: 外部関数の引数に構造体メンバを持つ構造体の使用 By ykano
16176 01/09/03 19:36:38 RE(11):PB7.0: 外部関数の引数に構造体メンバを持つ構造体の使用 By ryochan
16173 01/09/03 17:34:45 RE(10):PB7.0: 外部関数の引数に構造体メンバを持つ構造体の使用 By ykano
16172 01/09/03 17:20:18 RE(9):PB7.0: 外部関数の引数に構造体メンバを持つ構造体の使用 By ykano
16171 01/09/03 17:17:50 RE(8):PB7.0: 外部関数の引数に構造体メンバを持つ構造体の使用 By まつだ
16169 01/09/03 15:03:59 RE(7):PB7.0: 外部関数の引数に構造体メンバを持つ構造体の使用 By ryochan
16168 01/09/03 14:13:46 RE(6):PB7.0: 外部関数の引数に構造体メンバを持つ構造体の使用 By ykano
16167 01/09/03 13:24:20 RE(5):PB7.0: 外部関数の引数に構造体メンバを持つ構造体の使用 By M.M
16166 01/09/03 12:37:56 RE(4):PB7.0: 外部関数の引数に構造体メンバを持つ構造体の使用 By ykano
16165 01/09/03 12:20:24 RE(3):PB7.0: 外部関数の引数に構造体メンバを持つ構造体の使用 By ykano
16163 01/09/03 11:16:37 RE(2):PB7.0: 外部関数の引数に構造体メンバを持つ構造体の使用 By M.M
16162 01/09/03 09:54:10 RE(1):PB7.0: 外部関数の引数に構造体メンバを持つ構造体の使用 By ryochan
16161 01/09/02 15:45:14 PB7.0: 外部関数の引数に構造体メンバを持つ構造体の使用 By ykano

カテゴリ:スクリプトの記述
日付:2001年09月03日 15:03 発信者:ryochan
題名:RE(7):PB7.0: 外部関数の引数に構造体メンバを持つ構造体の使用

ykanoさん、こんにちは。

>構造体のメンバの構造体にchar型のメンバを入れた場合だけでなく、
>引数で渡した構造体のメンバに
>直接(?)char型のメンバを入れても同じです。
>外部関数の引数には、構造体メンバにchar型は使用できないのでしょうかね。

もしかしたら、シングルキャラクタの場合、
sprintfで\\0がセットされていないかもしれ
ません。

となると、落ちるときは取得時ではなく、
メッセージ表示時かもしれません。
直接charに\'文字\'(シングルクォーテーションに注意)
をセット入れた場合は確実にdbgbufに終端文字\\0をいれ
ないとダメですよ。

sprintf(dbgbuf, \"%c\", p_INREC->CTRLAREA);
dbbuf[sizeof(p_INREC->CTRLAREA)/sizeof(char)] = \'\\0\';
//もしくは*(dbgbuf + sizeof(p_INREC->CTRLAREA)/sizeof(char))=\'\\0\';
MessageBox(NULL, dbgbuf, \"引数:CTRLAREA\", MB_OK);

で試してみてください。
ちなみに私はこれで取得できています。

C:
struct mstruct{
 char a;
 char *b;
};
struct test_struct{
char *p_1;
char *p_2;
mstruct str1;
};

__declspec(dllexport) int __stdcall msg_value(
test_struct *pstr)
{
 char buff[10];
 sprintf(buff,\"%c\",pstr->str1.a);
 buff[ sizeof(pstr->str1.a)/sizeof(char)] = \'\\0\';
 //OR *(buff + sizeof(pstr->str1.a)/sizeof(char))=\'\\0\';
 MessageBox(NULL,buff,\"a\",MB_OK);
 return(0);
}

PB:
struct mstruct
 character a
 string b

struct test_struct
 string p_1
 string p_2
 mstruct str1

function long msg_value(test_struct pstr) library \"struc.dll\"

test_struct pstr
pstr.str1.a = \"A\"
msg_value(pstr)

PB:6.5、VC++6です(バージョンの違いとは思えませんが。)

と書きましたが、文字列で対応するのですよね。
なので、参考までに。


付加情報:

PowerBuilder Version (記載なし)

Client SoftWare

OS Windows95
DBMS (記載なし)
Browser (記載なし)

Server SoftWare

OS (記載なし)
DBMS (記載なし)
WebServer (記載なし)

PowerSpaceの運営は、パワーフューチャー株式会社が行っております。
Copyright © 2013 Power Future Co., Ltd.