gpt4 book ai didi

.net - 为什么这个语义上等效的(据我所知)vbscript 代码失败

转载 作者:行者123 更新时间:2023-12-02 06:22:07 27 4
gpt4 key购买 nike

我想为 VBScript 创建一个 FormatString 函数,其工作方式与 .Net 中的 String.Format 相同。

我发现我可以在 VBScript 中使用 System.Text.StringBuilder 对象并测试了以下有效的代码

Option Explicit

Dim sbText 'As System.Text.StringBuilder
Set sbText = CreateObject("System.Text.StringBuilder")

Call sbText.AppendFormat_5( _
Nothing, _
"My name is {0} and the current date time is '{1:dd MMMM yyyy HH:mm:ss}'", _
Array("Robert", Now))


Call MsgBox(sbText.ToString())

然后我将它放入一个函数中,但失败了,请参见下面

Option Explicit

Function FormatString(ByVal sText, ByVal Arguments) 'As String

Dim sbText 'As System.Text.StringBuilder

'Test the input variables
If Not TypeName(sText) = "String" Then _
Err.Raise 5 'vbErrInvalidProcCallOrArg

If Not IsArray(Arguments) Then _
Err.Raise 5 'vbErrInvalidProcCallOrArg

Set sbText = CreateObject("System.Text.StringBuilder")
Call sbText.AppendFormat_5(Nothing, sText, Arguments)

FormatString = sbText.ToString()

End Function

Call MsgBox(FormatString( _
"My name is {0} and the current date time is '{1:dd MMMM yyyy HH:mm:ss}'", _
Array("Robert", Now)))

调用 sbText.AppendFormat_5(Nothing, sText, Arguments) 失败,并出现错误“无效的过程调用或参数:'sbText.AppendFormat_5'”。

所以我不明白的是为什么在函数之外我可以按顺序传递以下类型:

什么都没有
字符串
排列

它们可以工作,但在函数内部却不能。

有人可以帮忙吗?

最佳答案

您需要按值传递数组参数:

Call sbText.AppendFormat_5(Nothing, sText, Arguments)
==>
Call sbText.AppendFormat_5(Nothing, sText, (Arguments))

关于.net - 为什么这个语义上等效的(据我所知)vbscript 代码失败,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14871983/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com