by イグトランス » 2006年10月04日(水) 22:57
wsprintfの方はどうしようもないと思います。
StrPtrなどを使って*Byteへ変換することを明示してやるしかないと思います。
例: wsprintf(SecToHour, "%02s:%02s:%02s", StrPtr(Str$(Hour)), StrPtr(Str$(Minute)), StrPtr(Str$(Second)))
なんでこうなるかというと,通常*Byteを引数に取ると宣言されている関数にString型のインスタンスを渡すと*Byteへ変換されますが,
wsprintfは可変個の引数を取るという性質上,どんな引数を取るか全く指定されていません。
だからString型のインスタンスを渡すと,*Byteへの変換が行われないまま生のStringが渡されてしまい,おかしなことになってしまうのです。
wsprintfの方はどうしようもないと思います。
StrPtrなどを使って*Byteへ変換することを明示してやるしかないと思います。
例: wsprintf(SecToHour, "%02s:%02s:%02s", StrPtr(Str$(Hour)), StrPtr(Str$(Minute)), StrPtr(Str$(Second)))
なんでこうなるかというと,通常*Byteを引数に取ると宣言されている関数にString型のインスタンスを渡すと*Byteへ変換されますが,
wsprintfは可変個の引数を取るという性質上,どんな引数を取るか全く指定されていません。
だからString型のインスタンスを渡すと,*Byteへの変換が行われないまま生のStringが渡されてしまい,おかしなことになってしまうのです。