すでに初期化されている可変数引数リスト・オブジェクト変数から、可変数引数リスト・オブジェクト変数を初期化するマクロ
構文:
cva_copy( dst_list, src_list )
パラメータ:
内容:
1つの
cva_list 型変数を、別の
cva_list 型変数に、コピーします。
dst_list は、
src_list の現在の状態を使って、初期化されます
src_list は、以前の
cva_start か
cva_copy 命令文で、すでに初期化されている必要があります。
cva_copy は、可変個引数リスト・オブジェクトのコピー構築子に似ていて、デストラクタのような
cva_end の呼び出しが最終的に一致する必要があります。
dst_list の
cva_end が呼び出された後、
dst_list を再利用し、
cva_start か
cva_copy の別の呼び出しで、再初期化できます。
cva_copy と
cva_end 呼び出しは、両方とも、同じ手続きで呼び出す必要があります(プラットフォーム間の互換性のため)。
例:
'' example of using cva_copy to create
'' a copy of the variable argument list
Sub proc CDecl(count As Integer, ... )
Dim args1 As cva_list
Dim args2 As cva_list
'' first list
cva_start( args1, count )
'' create a copy
cva_copy( args2, args1 )
For i As Integer = 1 To count
Print cva_arg( args1, Integer ), cva_arg( args2, Integer )
Next
'' clean-up
cva_end( args2 )
cva_end( args1 )
End Sub
proc( 4, 4000, 300, 20, 1 )
'' example of using cva_copy to create
'' a copy of the variable argument list
'' and pass it to another procedure
Sub vproc CDecl(count As Integer, ByRef args As cva_list )
'' if we don't know that caller made a copy
'' of args, it is safe to make our own copy
'' and leave the passed in args untouched
Dim a As cva_list
cva_copy( a, args )
Print "vproc"
For i As Integer = 1 To count
Print cva_arg( a, Integer )
Next
'' clean-up
cva_end( a )
End Sub
Sub proc CDecl(count As Integer, ... )
Dim args As cva_list
cva_start( args, count )
'' if don't know that the called procedure
'' will make it's own copy, it is safe to
'' make a copy here and pass that instead
Dim tmp As cva_list
cva_copy( tmp, args )
vproc( count, tmp )
cva_end( tmp )
'' args is still valid, we can use it
Print "proc"
For i As Integer = 1 To count
Print cva_arg( args, Integer )
Next
'' clean-up
cva_end( args )
End Sub
proc( 4, 4000, 300, 20, 1 )
バージョン:
方言差:
- -lang qb 方言では、別名 __cva_copy で参照されない限り、使えません。
QBからの違い:
参照: