1

私はプロシージャコールに次の開始を持っています

strReturn = OrderCreate(strGen8, _
                        strUID, _
                        Order, _
                        boolRecapFlag, _

そして、私たちが持っているパラメータを受け取る関数について..

function OrderCreate(strCoDiv, strUID, byRef Order, boolRecap, strBillFirst, etc.

Order 値がプロシージャに渡される場所が見つからなかったので。ByRef を使用すると、プロシージャからデータを取り出すことができると思いますか? Order 変数名を使用していますか?

4

3 に答える 3

4

パラメーターは、参照 (ByRef) または値 (ByVal) による 2 つの方法で関数に渡すことができます。VBScript では、既定のメソッドは ByRef です。

参照によって値を渡す場合、変数がメモリ内でアドレス指定する参照を渡します。これは、関数内で行われた変更は、関数が存在すると保持されることを意味します。また、変数に格納されたデータはメモリに一度だけ書き込まれるため、スクリプトがメモリを管理する方法を制御するためにも使用できます。

パラメータを値で渡すと、新しいスコープ内のメモリに変数のコピーが作成されます。新しいスコープ内でこの情報に加えられた変更は、他のスコープのデータには影響しません。

于 2012-02-27T19:59:22.087 に答える
1

byRefは、元の変数への参照を渡すことを意味します。したがって、関数の値を変更すると、元の値に反映されます

これは、値を渡して独立したコピーを作成するbyValとは異なります。

于 2012-02-27T19:54:15.527 に答える
1

byrefとbyvalの違い

dim my_org_age,my_wife_org_age

my_org_age = 43
my_wife_org_age = 43

Call make_our_ages_younger(my_org_age, my_wife_org_age)

上記のサブの後 (関数でさえないことに注意してください!)、 my_org_age と my_wife_org_age は 10 歳若くなります!

これは、ここで対応する関数がその引数 byREf を取るためです。

sub make_our_ages_younger(byref my_age,byref her_age)
    my_age = my_Age-10
    her_age = her_age-10
end sub

ここで、「byRef」という単語を削除してから実行すると、

Call make_our_ages_younger(my_org_age, my_wife_org_age)

私たちの年齢は変わらないことに気付くでしょう。

byRef の違いがわかりますか?

HTH

于 2012-02-28T14:42:26.703 に答える