2017-08-07 39 views
-1

我需要VB6是这样的:通行证名称程序到另一个程序在VB6

private sub function1 (a1 as integer, a2 as integer) as double 
    'code of function1 
end function 

private sub function2 (b1 as integer, b2 as integer) as double 
    'code of function2 
end function 

private sub function3 (kk as string) as string 
    dim c1 as double 
    dim c2, c3 as integer 
    c1 = kk(c2,c3) 
    ' In kk appear the name of function1 or function2 
end function 

此代码是错误的。
传递一个控制名称到另一个过程,我读这是可能的,
但是,有可能在vb6中使用名称函数?

感谢

+1

这里是处理同一个问题一个问题:https://stackoverflow.com/q/2629807/5162073。 –

+1

可能重复[如何调用一个函数名称引用VB中的字符串值](https://stackoverflow.com/questions/2629807/how-to-call-a-function-with-function-name-参考到一个字符串值,在-VB) –

回答

0

的标准方法来调用不同的代码在不同的情况下不调用基于字符串的方法。一般来说,要想能够“传入”想要使用的方法的这种事情的方式是使用VB所具有的多态性,并为每个实现使用单独的类。

在您使用您的接口类模块,说名为MyInterface

Public Function DoStuff(a1 as Integer, a2 as Integer) As Double 
End Function 

然后,创建两个类模块,每一个可能实现的接口:

MyClassA

Implements MyInterface 
Public Function MyInterface_DoStuff(a1 as integer, a2 as integer) As Double 
    'code of function 1 
End Function 

然后,在MyClassB,同样的事情,但你的其他实现:

Implements MyInterface 
Public Function MyInterface_DoStuff(a1 as integer, a2 as integer) As Double 
    'code of function 2 
End Function 

要,你需要有调用者传递一个实现MyInterface的一个实例使用它:

Private Sub Function3 (kk as MyInterface) 
    dim c1 as double 
    dim c2, c3 as integer 
    c1 = kk.DoStuff(c2,c3) 
    ' In kk appear any instance of MyInterface that you want to use 
End Sub 

调用功能3的一个例子:

Dim kk as MyInterface 
Set kk = New MyClassA 
Function3 kk 

为了在进一步阅读MSDN library: