运行字符串作为代码

时间:2013-09-17 11:56:12

标签: vb6

如何调用现有的VB6函数并动态传递参数或使用某些已定义的对象执行语句?例如。

Private Const KONST = 123.45
Private Function First()
    Dim var1 As String
    Dim var2 As Date
    Dim var3 As Integer
    ...
    var3 = Second(var1)                 'LINE 1
    ...
    var2 = var2 + IIf(var3 > KONST, 1, -1) 'LINE 2
    ...
    var2 = var2 * KONST                 'LINE 3
    ...
End Function

Private Function Second(ByVal str As String) As Integer
    Second = CInt(str)
End Function

在第1行:使用Second并返回值时,函数var1的名称可能是动态的

第2行:使用IIfvar3

,整个KONST应该是动态的

在第3行:整个var2 * KONST应该是动态的,即在这里我可以写var2 + KONSTvar3 / KONSTvar3 + 2221 + 2myCollection.Item("item_Key")

所有这些动态配置都将在配置文件中。

修改

我正在尝试使网格布局和数据填充动态。通过网格布局,我的意思是列的数量,它们的标题,顺序,格式等。按人口我的意思是将数据加载到网格中,这样做,有时我们用一些Enums解析数据库值,我们应用一些逻辑显示之前的数据,一列的值是基于其他列的值等。虽然,在某种程度上,这可以通过数据库视图实现,但是要在中心位置具有所有这些逻辑,我们从源代码执行此类操作。因此,我需要一些方法来动态调用我的vb6代码并在配置文件中定义调用(函数名称,参数,枚举,类型,语句)。

1 个答案:

答案 0 :(得分:2)

好吧,你可以使用CallByName(参见http://support.microsoft.com/kb/186143中的一个很容易找到的例子)来动态调用对象的方法和属性。

但我认为你想要动态执行整个组合语句。为此,您可以使用脚本控件(如在VBScript中)。有关示例,请参阅http://support.microsoft.com/kb/184740。特别是,它有一个运行任意语句的Eval函数。