ソス@ソスソスVB6ソスソスソス邇ゥソスソスActiveXソスヨ配ソスソスiソスソスソスソスソスjソスソスnソスソスソスソスソスソス
|
ソスEC/C++
ソスEDelphi
ソスEVisual BasicソスソスソスSソスソス
ソス@(VB2-VB6ソスソス.NETソスソスソスp)
ソスEVisual Basic(VB2-VB6)
ソスEVisual Basic .NET
ソスEVisual C++
ソスEpapy's softwarelibrary
ソス¥ソスソスフようソスネ趣ソスソスヘ可能ソスナゑソスソスソスソスH
ソスソスソスワゑソス
exeソスtソス@ソスCソスソスソスノコソス}ソスソスソスhソスvソスソスソスソスソスvソスgソスソスソス邇滂ソスフようソスノ包ソスソスソスソスフ茨ソスソスソスソスソスnソスソスソスト使ソスpソスソスソストゑソスソスワゑソスソスソスソスB
ソスソス
C:¥>test.exe "a" "b" "c" "d" "e" "f"
test.exeソスヘ趣ソスソスフようソスノ受け趣ソス閧オソストまゑソスソスソスソスB
int main(int argc, char *argv[])
{
// ソスネ暦ソス
}
ソスソスソスソスヘゑソスソスソスtest.exeソスソスActiveXソスソスソスソスソスソスソスソスソスフでゑソス
VB6ソスソス
ソスソス
v(0) = "a":v(1) = "b":v(2)= "c" ソスEソスEソスEソスEソスEソスEソスEソスE
test.main(v(0))
ソスニ鯉ソスソスソスソス謔、ソスノ配ソスソスソスnソスソスソスソスソスヘ可能ソスナゑソスソス蛯、ソスソスソスH
ソスoソスソスソスネゑソスソス鼾ソスヘ別な包ソスソス@ソスソスソスソスソスソストゑソスソスソスソスソスソスソスソスB
ソスソスしソスソスソスソスソス閧「ソスソスソスワゑソスソスB
ソスヌ伸
v= "a_b_c_d_e" '_ソスヘ具ソスリり文ソスソス
test.main(v)
ソスソスソスソスソスソスナゑソスソス蛯、ソスソス
>ソスソスソスソスヘゑソスソスソスtest.exeソスソスActiveXソスソスソスソスソスソスソスソスソスフでゑソス
ソスニゑソスソスソスソスソスソスニゑソス COM ソスノなゑソスけソスナゑソスソスソスヒ?(VBソスナは参ソスニ設定しソスソスNewソスソスソスト使ソスソス)
Declareソスナ使ソスソスソスソス謔、ソスノゑソスソスソスフは単ソスネゑソスDLLソスナゑソスソスB
ソスヌゑソスソスソスノゑソスソスソスAソスソスソスソスソスソス^ソスzソスソスナゑソスソスフゑソスSAFEARRAYソスソスgソスソスソスソスソスニになゑソスワゑソスソスB
ソスソスソスネみに、ソスソスソスソスソス^ソスzソスソスナゑソスソスフゑソス,
>test.main(v(0))
ソスフようソスノ先頭ソスvソスfソスソスByRefソスナ渡ソスソスソスニゑソスソスソスハ変奇ソス(UnicodeソスソスAsciiソスマ奇ソス)ソスソスソスNソスソスソス閧サソスソスソスネのゑソス
ソスzソスソスSソスフゑソスByRefソスナ渡ソスソスソス謔、ソスネ形ソスノゑソスソスソスソスルゑソスソスソスソスソスソスソスソスナゑソスソスB
ソスソスソスソスソスソス^ソスzソスソスナはなゑソスソスト、StrPtrソスフ難ソスソスソスソスソスLongソス^ソスzソスソスネゑソスホ簡単ソスソスソスソスソスソスソスソスソスヌ。
>v= "a_b_c_d_e" '_ソスヘ具ソスリり文ソスソス
>test.main(v)
>ソスソスソスソスソスソスナゑソスソス蛯、ソスソス
ソスナゑソスソス蛯、ソスヒ。
Blue ソスソスソスソスヤ趣ソスソスソスソス閧ェソスニゑソスソスソスソスソスソスソスソスワゑソスソスB
DLLソスナは可能ソスネのでゑソスソスヒ^ソスO
ソスソスソスソスソスYソスソスワゑソスソスソスソスAソスソスソス゚ゑソスネゑソスソスソスソスB
OCXソスニゑソスソスト使ソスpソスソスソスワゑソスソスB
ソスAソスNソスeソスBソスuXソスRソスソスソス|ソス[ソスlソスソスソスgソスナゑソスソスB
ソスソスしソスソスソスソスソス閧「ソスソスソスワゑソスソスB
>ソスソスしソスソスソスソスソス閧「ソスソスソスワゑソスソスB
ソスソスSAFEARRAYソス調べゑソスソスソスナの費ソスソスソスソスネゑソスナゑソスソス蛯、ソスソスソスH
ActiveXソスヘ搾ソスソスソスソスソスソスソスニなゑソスソスナゑソスソスソスソスA
v(0) = "a":v(1) = "b":v(2)= "c" ソスEソスEソスEソスEソスEソスEソスEソスE
test.main(v) ' ByRef s() As String
ソスフようソスネ指ソスソスソスソスソスト呼ぶ場合ソスACソスソスソスナは、LPSAFEARRAY* ソス^ソスナ受けるこソスニになゑソスワゑソスソスB
ソス゚具ソスソスソスソスOソスソスWebソスソスソスソスソスナ茨ソスx SAFEARRAY ソスノつゑソスソスト鯉ソスソスソスソスソスソストみゑソスニゑソスソスソスソスナゑソスソス蛯、ソスB
>SAFEARRAYソス調べゑソスソスソスナの費ソスソスソスソスネゑソスナゑソスソス蛯、ソスソスソスH
ソスソスソスソスソスソスAソスソスソスラつゑソスソスソスソスワゑソスソスソスソスB
VC++ソスソスActiveX ソスRソスソスソスgソスソスソス[ソスソスソスソス成ソスソスソストゑソスソスソスフでゑソスソスソス
ソスソスソス¥ソスbソスhソスフ追会ソスソスソスソスソスAソスソスソスソスソスフタソスCソスvソスソスン定すソス骰ソスレゑソス
LPSAFEARRAY*ソスソスソスソスソスソスワゑソスソスソスBソスソスソスがゑソスソスソスフゑソスソスニ思ソスソスソスワゑソスソスB
> LPSAFEARRAY*ソスソスソスソスソスソスワゑソスソスソスBソスソスソスがゑソスソスソスフゑソスソスニ思ソスソスソスワゑソスソスB
ソスナゑソスVARIANT*ソスナ受けてはどゑソスソスナゑソスソス蛯、ソスソスソスH
ソスQソスl
http://hpcgi1.nifty.com/MADIA/Vcbbs/wwwlng.cgi?print+200609/06090040.txt
>VARIANT*ソスナ受けてはどゑソスソスナゑソスソス蛯、ソスソスソスH
ソスソスソス竄キソスソスネ前ソスノ参ソスlソスソスmソスFソスソスソスト色ソスXソスニ趣ソスソスソスソスワゑソスソスソスソスBDLLソスナは可能ソスナゑソスソスソスソスBソスiMSDNソスノゑソスソスソスソスワゑソスソスソスヒ)
ActiveX ソスRソスソスソスgソスソスソス[ソスソスソスナは趣ソスソスフ通ゑソスナゑソスソスB
ActiveX ソスRソスソスソスgソスソスソス[ソスソスソスソスVC++ソスソス
long CTestddCtrl::foo(VARIANT FAR* v)
{
SAFEARRAY* psa;
if ( v->vt != ( VT_ARRAY | VT_BSTR | VT_BYREF ) ) return 1;
psa = *( v->pparray );
if ( psa->cDims != 1 ) return 2;
return 0;
}
ソスニなゑソスソストゑソスソスワゑソスソスB
VB6ソスナゑソス
Private Sub Command1_Click()
Dim v(2) As String
v(0) = "ソスソスソスソスノゑソスソスソス"
v(1) = "ソスeソスXソスg"
v(2) = "test"
MsgBox Testdd1.foo(v(0))ソス@ソスソスソスソスソスソスソスナ型ソスソスソスソスvソスソスソスワゑソスソスソス
End Sub
ソスソスソスソス
MsgBox Testdd1.foo(v)ソス@ソスソスソスソスソスソスソスナ型ソスソスソスソスvソスソスソスワゑソスソスソス
ソスソスソスソス
Dim v(2) As Variantソス@ソスノ変更ソスソスソスソス
MsgBox Testdd1.foo(v)ソス@ソスソスソスソスソスソスソスナ型ソスソスソスソスvソスソスソスワゑソスソスソス
ソスソスソスソス
MsgBox Testdd1.foo(v(0))ソス@ソスソスソスbソスZソス[ソスWソス{ソスbソスNソスXソスナ”1ソスhソスソスソス¥ソスソス
ソスソスソスソスVC++ソスソス
// if ( v->vt != ( VT_ARRAY | VT_BSTR | VT_BYREF ) ) return 1;
ソスニゑソスソスト削除ソスソスソスソスソスB
MsgBox Testdd1.foo(v(0))ソス@ソスソスソスbソスZソス[ソスWソス{ソスbソスNソスXソスナ”2ソスhソスソスソス¥ソスソス
ソスネ擾ソスワで確ソスFソスソスソスワゑソスソスソスソスB
ソスKソスソスソスノゑソスソスソストみゑソスソスB
VC
void CActiveXTestCtrl::ShowList(VARIANT FAR* list)
{
// TODO: ソスソスソスソスソスノデソスBソスXソスpソスbソス` ソスnソスソスソスhソスソス ソスRソス[ソスhソスソスヌ会ソスソスソスソストゑソスソスソスソスソスソスソスソスB
SAFEARRAY* psa;
BSTR wcs;
long i, lb, ub;
CString s;
if ( list->vt != ( VT_ARRAY | VT_BSTR ) ) return;
psa = list->parray;
if ( psa->cDims != 1 ) return;
SafeArrayLock( psa );
SafeArrayGetLBound( psa, 1u, &lb );
SafeArrayGetUBound( psa, 1u, &ub );
for ( i = lb; i <= ub; i++ )
{
SafeArrayGetElement( psa, &i, ( void* )&wcs );
AfxMessageBox( CString( wcs ) );
}
SafeArrayUnlock( psa );
}
VB
Option Explicit
Sub test()
Dim v As Variant
Dim s(2) As String
Dim a As New ActiveXTest
v = Split("ABC,ソスソスソスソスソスソス,a", ",")
a.ShowList v
s(0) = "ソスソスソスソス"
s(1) = "#%"
s(2) = "ソスJソス^ソスJソスi"
v = s
a.ShowList v
End Sub
ActiveXソスネゑソスソスBSTR*ソスナゑソスソスソスソスソスソス謔、ソスナゑソスソスB
VC
void CActiveXTestCtrl::ShowList2(BSTR FAR* list, long count)
{
// TODO: ソスソスソスソスソスノデソスBソスXソスpソスbソス` ソスnソスソスソスhソスソス ソスRソス[ソスhソスソスヌ会ソスソスソスソストゑソスソスソスソスソスソスソスソスB
for ( int i = 0; i < count; i++ )
{
AfxMessageBox( CString( list[ i ] ) );
}
}
VB
Sub test()
Dim a As New ActiveXTest
Dim s(2) As String
s(0) = "ソスソスソスヘよう"
s(1) = "ソスソスソスソスノゑソスソスソス"
s(2) = "ソスソスソス謔、ソスネゑソス"
a.ShowList2 s(0), 3
End Sub
BlueソスソスソスありがソスニゑソスソスソスソスソスソスソスソスワゑソスソスB
Dim v As Variantソス@ソスソス
Dim v(4) As Variant ソス‾
VB6ソスフ変撰ソスソスン定がソスソスソスソスソスソスソスソスソスフでゑソスソスソス
ソスラ具ソスソスノなゑソスワゑソスソスソスソスB
ソス謔ュソス謔ュソスlソスソスソストみゑソスソスソスAVARIANT*ソスノゑソスソスソスKソスvソスソスネゑソスソスAVARIANTソス^ソスナよかソスソスソスソスソスナゑソスソスB
ソスソスソスソスニ、VBソスソスソスナゑソスソスソスソスソスソスソス Variantソス^ソスマ撰ソスソスノ難ソスソスソスネゑソスソストゑソスStringソス^ソスzソスソスnソスソスソスワゑソスソスヒ。
void CActiveXTestCtrl::ShowList(const VARIANT FAR& list)
{
// TODO: ソスソスソスソスソスノデソスBソスXソスpソスbソス` ソスnソスソスソスhソスソス ソスRソス[ソスhソスソスヌ会ソスソスソスソストゑソスソスソスソスソスソスソスソスB
SAFEARRAY* psa;
BSTR wcs;
long i, lb, ub;
CString s;
if ( list.vt != ( VT_ARRAY | VT_BSTR ) ) return;
psa = list.parray;
if ( psa->cDims != 1 ) return;
SafeArrayLock( psa );
SafeArrayGetLBound( psa, 1u, &lb );
SafeArrayGetUBound( psa, 1u, &ub );
for ( i = lb; i <= ub; i++ )
{
SafeArrayGetElement( psa, &i, ( void* )&wcs );
AfxMessageBox( CString( wcs ) );
}
SafeArrayUnlock( psa );
}
Sub test()
Dim s(2) As String
Dim a As New ActiveXTest
s(0) = "ソスソスソスソス"
s(1) = "#%"
s(2) = "ソスJソス^ソスJソスi"
a.ShowList s
End Sub