■ 現在のこのページの役立ち度:
表示されない場合こちらのリンクからもご覧になれます。
■ このページの役立ち度を評価する:
役立ち度を評価してください。
(1(左):あまり役立たない - 5(右):大変役立った):
■ ページの共有:
[ サイト内検索 ]
カスタム検索
#5779-0Val関数について葉霧1999-12-16(木) 22:16
     #5797-0RE#5779:Val関数についてみゃお1999-12-17(金) 14:41
     #5800-0RE#5797:Val関数について魔界の仮面弁士1999-12-17(金) 15:36
#5779-0
Val関数について
そろそろ初心者は脱出したかな?
とも思う今日このごろですが、質問がどう見ても初心者な
気がするのでこちらに書きこみさせてもらいます。

Val関数に何らかのバグがあると聞いたので、Cintを用いて
Val関数と同様に使える関数を作ってみました。
10個以上置き換えてみたのですが実行ファイルのサイズが1Byteも変化しませんでした。
ちょっと不思議に思ったのでどなたかこの疑問を氷解させてください。
後、Val関数のバグと言うのもできれば知っておきたいです。

コードは以下の通りです

Public Function Cnum(Number As String) As Long

'********************************************************
'機能:CintでValと同様の使用法を可能にする
'      文字列中に数字以外を発見した場合はその直前までの
'      文字列を整数化する
'
'引数:Number = 整数化したい文字列
'********************************************************

Dim i As Integer
Dim strCheck As String
Dim HowLong As Integer

If IsNumeric(Left$(Number, 1)) = True Then

    HowLong = Len(Number)
    For i = 1 To HowLong
    strCheck = Mid$(Number, i, 1)
        If IsNumeric(strCheck) = False Then
            Cnum = CLng(Mid$(Number, 1, i - 1))
            Exit Function
        End If
    Next i
    
    Cnum = CLng(Number)

Else
    Cnum = 0
End If

End Function
#5797-0
RE#5779:Val関数について
> Val関数に何らかのバグがあると聞いたので、Cintを用いて
> Val関数と同様に使える関数を作ってみました。
> 10個以上置き換えてみたのですが実行ファイルのサイズが1Byteも変化しませんでした。
> ちょっと不思議に思ったのでどなたかこの疑問を氷解させてください。
これについては説明できませんが、実行ファイルのサイズに関係あるとどうして思ったのですか?

> 後、Val関数のバグと言うのもできれば知っておきたいです。

<MSDNライブラリより引用>
[VB4 ] 言語仕様上の制限事項
32 ビット版の制限事項

文字列操作関数を連続使用するとメモリを消費することがある
Windows 95 の場合は Windows 95 Service Pack 1 および最新モジュール (KERNEL386.DLL) で
Windows 95 のアップデートをしてください。なお、Val関数を使用している場合はこの処理でも改善
しない場合がありますので、CInt、CLng、CDbl などに変更してください。 
<引用終わり>

VB4でのバグなので、MSのサポート情報からはすでに無くなっているようですね。
#5800-0
RE#5797:Val関数について
>> 10個以上置き換えてみたのですが実行ファイルのサイズが1Byteも変化しませんでした。
>> ちょっと不思議に思ったのでどなたかこの疑問を氷解させてください。
確かファイルサイズは、モジュール数と、各モジュール内のコード量により変化したと思います。
(ただし、コード量に比例するのではなく、一定単位ごとにふえるようです。)

また、DLLの呼び出しを行う場合などは、その関数単位で増加します。
同じ関数を複数呼んでも、ファイルサイズは、1回しか呼ばなかった場合と変わりません。

それと、Windows起動直後にVBを立ち上げ、そこですぐにコンパイルした場合と、
幾つかのアプリを使って、リソースの低下した状態でのコンパイルとでは、
後者の方が、ファイルサイズが増加することがありますね。


>> 後、Val関数のバグと言うのもできれば知っておきたいです。
> <MSDNライブラリより引用>
> [VB4 ] 言語仕様上の制限事項
> 32 ビット版の制限事項
>  ・・・・・・・・・・・・・・・・・・
> <引用終わり>
> VB4でのバグなので、MSのサポート情報からはすでに無くなっているようですね。

この文書は、最終改定日が1998/12のようですね。
1999年版のMSDN ライブラリになら、VB5で発生するかどうかについても
記述されているかと思います。
(少なくとも、MSDNライブラリ 1999年10月リリース版には、
 VB5でVal関数のバグが発生するかどうかが書いてありました)

「J027616:[VB] 言語仕様上の制限事項」
》 Val 関数についての現象は Visual Basic 5.0 では発生しません。
お探しの情報は見つかりましたか?お困りの問題は解決しましたか?
サイト内検索, 似た記事検索で見つからなくてもあきらめずに掲示板で質問してみましょう。
VB初心者友の会があなたのお役に立てれば幸いです。また、本ページの投稿者の方々にこの場を借りて感謝致します。
本ページは過去ログを集めて自動構成しています。よろしければこのページに関するフィードバックをお願いします。
(※ 構成の誤り、広告等の不適切な記事、リンク切れ、読めないページの報告など)