Vbscript 在VB中字符串是如何工作的

Vbscript 在VB中字符串是如何工作的,vbscript,Vbscript,我目前正在使用Active Directory修改一个内部网网站,古代的开发人员用VB做了所有的事情,我现在用C#和一些最新的技术来开发它。因此,我正在浏览他的代码,了解一些我很难理解的功能(我对VB做了一个快速的概述,以了解它是如何在全球范围内工作的),我不理解字符串在这里是如何工作的 例如,有以下声明: Dim sGroups, oGroup sGroups=activeDirectoryUserObject.memberOf //Returns groups that user belon

我目前正在使用Active Directory修改一个内部网网站,古代的开发人员用VB做了所有的事情,我现在用C#和一些最新的技术来开发它。因此,我正在浏览他的代码,了解一些我很难理解的功能(我对VB做了一个快速的概述,以了解它是如何在全球范围内工作的),我不理解字符串在这里是如何工作的

例如,有以下声明:

Dim sGroups, oGroup
sGroups=activeDirectoryUserObject.memberOf //Returns groups that user belongs to
set oGroup = GetObject("LDAP://" & sGroups)
For j = 0 To UBound(sGroups)
    Set oGroup = GetObject("LDAP://" & sGroups(j)) //Here!!
什么是
sGroups(j)
?对我来说,
sGroups
是字符串而不是数组,那么这里发生了什么

谢谢你的帮助

伦纳德:

似乎sGroups(j)是一个字符串,(j)部分是一个计数器。如果用户属于多个组,则可能正在使用此选项

真诚地

伦纳德:

似乎sGroups(j)是一个字符串,(j)部分是一个计数器。如果用户属于多个组,则可能正在使用此选项

真诚地


Joe

字符串在VBS/VBA/VB6中没有索引。在VB.NET中,索引的方法是不同的。因此,如果对象被索引为“sGroups(j)”,那么它不是一个字符串

确定sGroups是什么的一个明显方法是查看activeDirectoryUserObject及其memberOf属性。你应该这样做,你应该在这里包含代码,这样我们才能看到它

如果它是一个外部定义的对象,并且没有文档,那么可以使用Typename()函数或VarType函数来提取信息。因为这是一个使用ASP脚本的网站,要么它将是一个变体数组,要么脚本完全被破坏


这两种方法都是可能的,因为您提供的脚本片段本身毫无意义(另请参见oGroup的重新定义,其中没有使用它的代码)。

字符串在VBS/VBA/VB6中没有索引。在VB.NET中,索引的方法是不同的。因此,如果对象被索引为“sGroups(j)”,那么它不是一个字符串

确定sGroups是什么的一个明显方法是查看activeDirectoryUserObject及其memberOf属性。你应该这样做,你应该在这里包含代码,这样我们才能看到它

如果它是一个外部定义的对象,并且没有文档,那么可以使用Typename()函数或VarType函数来提取信息。因为这是一个使用ASP脚本的网站,要么它将是一个变体数组,要么脚本完全被破坏


这两种方法都是可能的,因为您提供的脚本片段本身毫无意义(另请参见oGroup的重新定义,其中没有使用它的代码)。

activeDirectoryUserObject.memberOf返回什么类型?sGroups就是这种类型的。这不是那么难猜测的.NET代码。memberOf是一个“多值属性”,所以肯定是一个数组。用户所属的多个组。VB允许索引属性,而C#不允许,应该由.NET中的Principal.GetGroups()覆盖。第一个赋值完全是胡说八道,For循环应该提供真正的赋值。@HansPassant哦,我确信它是一个字符串。。。现在无法验证我的代码我不在工作,但是在
oGroup
声明和for循环之间有几行,我只是没有发布它,因为它不相关。
activeDirectoryUserObject.memberOf
返回什么类型?sGroups就是这种类型的。这不是那么难猜测的.NET代码。memberOf是一个“多值属性”,所以肯定是一个数组。用户所属的多个组。VB允许索引属性,而C#不允许,应该由.NET中的Principal.GetGroups()覆盖。第一个赋值完全是胡说八道,For循环应该提供真正的赋值。@HansPassant哦,我确信它是一个字符串。。。现在无法验证我的代码我不在工作,但是在
oGroup
的声明和for循环之间有几行,我只是没有发布它,因为它不相关。是的,关于多个组,你是对的。该方法的要点是创建一个组树,以了解用户所属的所有组,然后能够根据这些组创建一个动态菜单。所以j是一个计数器,我想正如@Hans所说,使用memberOf的声明可能是一个数组声明,所以这一切都是有意义的。将验证Tomorrow是的,关于多个组,您是正确的。该方法的要点是创建一个组树,以了解用户所属的所有组,然后能够根据这些组创建一个动态菜单。所以j是一个计数器,我想正如@Hans所说,使用memberOf的声明可能是一个数组声明,所以这一切都是有意义的。这里的全部困难在于它被用作字符串和数组,这就是我发布oGroups定义的原因,因为它使用sGroups作为字符串。这对我来说太长了,我想这只是一个语义问题,这就是为什么我觉得没有必要发布一些可测试的东西。感谢您的回答:)sGroups在代码片段中不用作字符串。sGroups(j)用作字符串。整数数组不是整数:字符串数组不是字符串。代码第三行:sGroups是字符串。我还与开发人员进行了检查,开发人员告诉我,根据memberOf属性的不同,有两种情况,可以是字符串或数组。结论:sGroups是一个字符串,或者sGroups是一个数组,具体取决于memberOf属性。这里的全部困难在于它被用作字符串和数组,这就是我发布oGroups定义的原因,因为它使用sGroups作为字符串。这对我来说太长了,我想这只是一个语义问题,这就是为什么我觉得没有必要发布一些可测试的东西。感谢您的回答:)sGroups在代码片段中不用作字符串。sGroups(j)用作字符串。整数数组不是整数:字符串数组不是字符串