ただこの方法に問題がないかといえば「ない」と100%言い切れるものではありません。
例えば、指数を読み込むようなプログラムのソースを配布すると、(バージョンアップで修正されたとしても)ActiveBasicのバージョンによってはどうしても正しく動かないことが出てきてしまいます。
また、Win64になるとCランタイムがどうなるかわかりません(DLLのファイル名・仕様etc...)。
ただ、sscanfは16進数や8進数にも対応しており、
コード: 全て選択
sscanf("755","%o",VarPtr(i)) '8進数 755 を10進数に変換
とか
コード: 全て選択
sscanf("1000","%x",VarPtr(i)) '16進数 1000 を10進数に変換
というコードも書けてしまいます(iはLong型の変数)。
そうなると、実質Val関数は内部でsscanfを呼び出せば済む話になってしまいます…。
このことはStr$にもいえて、こちらはsprintfという関数(Cランタイム)を呼び出せばそれで解決します(小数がいらない場合は標準定義のwsprintfでもできます)。
やっぱりCランタイムなんて邪道ですかね?>山本さん
>konisiさん
Get #はどのような不具合があるのでしょう?ひょっとしたらVal関数のように修正ができるかもしれません。