VB6.0レッスン

免責事項:この記事はブロガーオリジナル記事です、続くBY-SAのCC 4.0を著作権契約、複製、元のソースのリンクと、この文を添付してください。
このリンク: https://blog.csdn.net/jywlchuang/article/details/102666275

パラメータ
1、パラメータ:プロセスは、サブプロセス及び機能において生じます。
2、引数:値渡されたパラメータを呼び出す
ここに画像を挿入説明
送信することによってアドレスにより2、およびパラメータ値を
二つの方法で転送パラメータをVBを:値によって、アドレス転送によって。どちらとしても知られているアドレスで渡さ「参照。」
図1に示すように、渡されたパラメータの値に応じて
BYVAL定義されたパラメータを用いて値によって。使用される場合、プログラムパラメータがメモリに一時的にメモリセルを割り当て、及びメモリ・ユニットに渡される引数の値です。パラメータ変更プロセスの値は、唯一のパラメータは、メモリユニット内の値を変更するときは、引数の値を変更しません。
以下のような:

Private sub test( byval a as integer, byval b as  integer)
   A=a+20
   B=b+0
   Print “a=& a , “b=& b
End sub

Private sub cmdtest_click()
    Dim num1 as integer ,  num2 as integer
    Num1=10
    Num2=10
    Print “num1=& num1 , “num2=& num2
    Call test(num1,num2)
    Print “num1=& num1 , “num2=& num2
End sub

上記のコードでは、テストプロセスパラメータは、bの値を変更し、AとBのパラメータは値によって渡され、「cmdtest」をクリックし、パラメータbが変更され、撮影した実際のパラメータNUM1をNUM2に影響を及ぼしません値。

図2に示すように、アドレスによってパラメータを渡す
BYREF定義されたパラメータを使用して、アドレス値に応じ。定義プロセスでは、ByValのない場合は、デフォルトのパラメータは、アドレスによって渡されます。
アドレスで渡されたパラメータは、呼び出されたプロシージャのメモリアドレスに渡された仮パラメータを指します。そして、パラメータの引数が同じアドレス、すなわち、パラメータの引数と一部共有し、同じストレージユニットを持っています。
(整数、整数bとAS)試験サブプライベートは
。.........他は同じである
結果:AおよびBは、パラメータの変更は、実際のパラメータ値NUM1とNUM2に影響を与えています。すべての下にここに画像を挿入説明
いくつかのルールを参照して、値、パラメータ、アプリケーションアドレスによって渡されるパラメータによって渡された:
(1)整数、長い整数、又は単精度パラメータの場合、プロセスは、伝統的な値を使用して、引数の値を変更したくない場合道。効率を改善するために、文字列と配列は、送信モードに対処しなければなりません。加えて、ユーザ定義型とコントロールはアドレスのみを透過させることができます。
(2)他の種類のデータについては、送信は、2つの方法で使用することができます。誤用パラメータを避けるために、値を転送することにより、これらのパラメータの最適な使用することをお勧めします。
(3)関数の戻り値の手順をプロセスの名前ではなく、唯一の値を返し、プロセス中のサブプロセスは、値名を返すことができないが、パラメータの値を返すことがあり、そして複数の値を返すことができます。しかし、使用するサブルーチンの戻り値は、対応するアドレスモード伝送パラメータを必要としています。

配列パラメータは:定義プロセスでは、プロセス・パラメータ・リストの配列パラメータとして現れます。構文は次のとおりである:
形状缶配列名()としてのデータタイプ]
説明:引数リストの配列のみの配列を渡すことができるプロセスは、アドレス、すなわち、仮パラメータ及び引数がメモリの同じ部分を共有を転送する、「()」括弧を必要としませんユニット。
以下のような:

Private function average( age() as integer , n as integer )  as integer
  Dim I as integer, aver as integer, sum as integer
  For I =0  to n-1
     Sum=sum+age(i)
  Next i
  Aver=sum/n
  Average=aver
End function

Private sub command1_click()
  Dim employees()  as  integer   ‘定义一个用于存储员工年龄的数组
  Redim employees(6) 
  Employees(0)=20
  Employees(1)=28
  Employees(2)=30
  Employees(3)=24
  Employees(4)=25
  Employees(5)=35
  text1=average(employees,6)
end sub

年齢パラメータの引数として配列上の従業員は、パラメータの年齢部門は次元配列を変更する必要があります。だから、引数の従業員は「薄暗い従業員()整数として、」ステートメントは、動的配列として宣言しなければなりません。

第三に、オブジェクトパラメータ
プロセスパラメータに引数として変数や配列の他には、VBが可能実際のプロセスパラメータに渡されたパラメータとして(例えばフォーム、コントロール、など)オブジェクト。
モードオブジェクトパラメータは、オブジェクトプラスのByValの前に処理パラメータの定義で、即ち、転送するために使用することができ、参照することができる。
次の例では、サブプロセスおよび使用不能によるobjectenaコマンドボタン、テキストボックスコントロールが設けられています。

Private sub objectena( obj1 as object , obj2 as object)
  obj1.enabled=false
  obj2.enabled=false
end sub

private sub form1_load()
  objectena text1,command1
end sub

第四に、ネストされた手順

sub mysub1()
...
end sub

sub mysub2()
   call mysub1
end sub

private sub form1_load()
call mysub2
end sub

上記のコードは、mysub2手順はmysub1プロセスを呼び出し、次にForm1_Loadイベントプロシージャは、プロセスmysub2呼び出し

おすすめ

転載: blog.csdn.net/jywlchuang/article/details/102666275