DirectX9とC++でプログラミングをやっているのですが...

フォーラム(掲示板)ルール
フォーラム(掲示板)ルールはこちら  ※コードを貼り付ける場合は [code][/code] で囲って下さい。詳しくはこちら
fulls

DirectX9とC++でプログラミングをやっているのですが...

#1

投稿記事 by fulls » 14年前

DirectX9とC++でプログラミングをやっているものですが... 画面上に文字を表示させる関数を作っているのですが、コンパイルはできるのに実行するとエラーが出ます。

コード:

void DrawString(float x,float y,LPCWSTR str,...)
{
//可変引数用リスト
va_list list;
LPCWSTR p;
LPWSTR Sum;
va_start(list,str);
for(p=str;*p;++p){
if(*p!='%'){
wsprintf(Com,p);
continue;
}
++p;
//「%」の後の文字の判別
switch(*p){
case 'd': //%d
wsprintf(Com,_T("%d"),va_arg(list,int));
break;
case 'c': //%c
wsprintf(Com,_T("%d"),va_arg(list,char));
break;
case 's': //%s
wsprintf(Com,_T("%d"),va_arg(list,char*));
break;
default:
break;
}
RECT rect;
SetRect(&rect,(int)x,(int)y,0,0);//描画位置
lpD3DFont->DrawText(NULL, Com, -1, &rect, DT_LEFT | DT_NOCLIP, D3DCOLOR_ARGB(255, 255, 0, 0));
}
エラー内容↓

Run-Time Check Failure #3 - The variable 'Com' is being used without being initialized.

多分初期化されずにComというものを使っていると書いてあるのでしょうが、何をどうすれば...って感じです。
わかる方教えてください。
因みに、Unicodeでやっています。
また、まだこの関数が動作したところを見ていないのですが、他におかしなところがあればご指摘ください。

アバター
softya(ソフト屋)
副管理人
記事: 11677
登録日時: 15年前
住所: 東海地方
連絡を取る:

Re: DirectX9とC++でプログラミングをやっているのですが...

#2

投稿記事 by softya(ソフト屋) » 14年前

[訂正]
Comと言う変数が未初期化で使われているというエラーでした(あせ)。

ソースコードを見る限りComの定義がないですが、どうなっていますか?
by softya(ソフト屋) 方針:私は仕組み・考え方を理解して欲しいので直接的なコードを回答することはまれですので、すぐコードがほしい方はその旨をご明記下さい。私以外の方と交代したいと思います(代わりの方がいる保証は出来かねます)。

fulls

Re: DirectX9とC++でプログラミングをやっているのですが...

#3

投稿記事 by fulls » 14年前

SumというのがComです。
すいませんm(__)m

fulls

Re: DirectX9とC++でプログラミングをやっているのですが...

#4

投稿記事 by fulls » 14年前

今更思ったのですが、

コード:

wsprintf(Com,p);

コード:

wsprintf(Com,_T("%d"),p);
だったりして...
とか思ったのですが。

アバター
softya(ソフト屋)
副管理人
記事: 11677
登録日時: 15年前
住所: 東海地方
連絡を取る:

Re: DirectX9とC++でプログラミングをやっているのですが...

#5

投稿記事 by softya(ソフト屋) » 14年前

LPWSTR Sum;
だとメモリを確保していないで実行時エラーになります。
もしかして、C言語などのポインタに関して十分な勉強をされていないのでは無いですか?

あとyucky001さんの言われる通り、書式を書かずにwprintfしてもエラーになります。
私の勘では、
wsprintf(Sum,_T("%c"),*p);
が書きたい内容ではないでしょうか。

それ以前にワイド文字対応させるなら
wsprintf(Sum,L"%c",*p);
が正解だとか
wvsprintfを使ったらもっと楽になるとか色々ありますが、根本的なことからまず解決しましょう。
by softya(ソフト屋) 方針:私は仕組み・考え方を理解して欲しいので直接的なコードを回答することはまれですので、すぐコードがほしい方はその旨をご明記下さい。私以外の方と交代したいと思います(代わりの方がいる保証は出来かねます)。

fulls

Re: DirectX9とC++でプログラミングをやっているのですが...

#6

投稿記事 by fulls » 14年前

無事できました。
ありがとうございました。
wvsprintfを使いました。
ただ、小数が使えないのでその辺は自力で頑張ります。

閉鎖

“C言語何でも質問掲示板” へ戻る