问题标签 [scripting.dictionary]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
asp-classic - ASP:使用 ADODB.Command 结果读取 Scripting.Dictionary
我正在尝试从 Active Directory 中查询 userAccountControl 并将其与我在脚本中设置的字典进行匹配。
首先,我设置我的字典对象并填充它:
然后我连接到我的 Active Directory 来查询它:
然后我像这样遍历结果:
这一切都很好。我现在要做的是查询我使用来自 objRS("userAccountControl") 的结果创建的 uac 字典。当我尝试这样做时,它返回一个空白值?
我很难过 - objRS 值是作为字符串返回的吗?如果我执行 Response.Write uac.Item("512") 它可以工作,但如果我执行 Response.Write uac.Item(uacResult) 则不行
有任何想法吗?
excel - 类不支持自动化或不支持预期的接口
我正在导入一种用于在 Excel 中报告的 CSV 安全文件。该文件基本上具有以下格式:
该报告是一种矩阵,如下所示:
我能想到的最简单的方法是执行以下步骤:
- 打开文件并将所有内容放入 3 个多级字典(一个用于用户,一个用于角色,一个用于权限),使用
Scripting.Dictionary
. - 创建一个工作表并根据字典构建矩阵。
显然,实际的文件格式和实现要复杂一些,但这就是它的要点。
它适用于最大约 10Mb 的文件,但是当文件开始超过该数量(数千个用户和角色)时,我收到以下错误:
这发生在以下行:
如果我查看进程,EXCEL.EXE 在引发错误的地方使用了大约 1.5Gb 的 RAM。如果我结束,而不是调试然后关闭工作簿,我会收到以下消息:
我猜我的 RAM 用完了,尽管我的 8Gb 中仍有大约 4Gb 可用。
我的问题是:我如何重构我的代码,以便它在不使用这么多 RAM 的情况下做到这一点?
文件中的部分可能有不同的顺序(就像!Permissions
可能在!Users
部分之前一样)。
arraylist - 如何附加到作为字典中键值的数组?
如果我这样设置字典:
我问一个用户他的名字。
然后我向用户询问五个数字。
并使用ArrayList将五个提示数字放入任何数组
name
如果我在我设置的字典中添加一个键。
我可以在我之前设置的字典中添加myArrayList
一个值吗?name
myDict
myArrayList
如果是这样,如果我要循环五个数字问题,我该如何追加或添加?
html - 将 HTML 表中的所有项目存储到脚本字典中,同时添加重复值
我想将在 html 表中找到的所有项目存储在字典中。
当我有重复项时我会遇到问题,因为我下面的代码不会再次存储该项目,并且我需要此表中的所有项目,即使有任何重复项。
如果我有像Round 38这样的重复值,其中另一个Match3具有相同的轮数,我想再次列出这些重复值。
结果应如下所示:
第38轮
比赛1
比赛2
第37轮
比赛1
比赛2
第38轮
比赛3
比赛4
.....................
vba - 如何将数组添加到脚本字典中的单元格下拉列表中?
我有来自不同应用程序的数据转储。我想从数据转储中的奇异列(具有可变长度)中获取唯一值。一旦我有了唯一值,我希望将它们从数据验证中调用到 .incelldropdown 中。除了我得到错误的最后一部分之外,我已经弄清楚了大部分内容:
见下文:
调试器说问题出d.Keys()
在脚本。但是,我尝试Join (d.Keys(), ",")
在数据验证中使用并调用该新变量转换为字符串,这会产生相同的错误。我在 Excel 2010 上运行它。
我认为这也可能是变体数组是 2D 并且它需要是 1D 的问题,但似乎并非如此。
excel - UserForm 根据 cobo 值识别正确的工作表
我有一个包含客户信息的工作簿。每个客户都有一张表格,每张表格都标有客户的唯一 ID。我想启动一个用户窗体,用户将从一个组合框中选择一个客户端。然后,来自相应工作表最后一行的数据填充用户窗体。
在同一工作簿中的其他代码中,我使用的是脚本字典,但它们都与特定工作表中的特定范围相关联。我不知道如何为 UserForm 编写代码以在所有工作表中搜索以找到与 cobo_ClientID 字段中的值具有相同名称的工作表,然后从具有 MAX 更新日期的行中引入正确的数据元素。
这是我在其他领域一直在使用的脚本字典的示例:
c++ - 如何初始化 SAFEARRAY 从 Scripting.Dictionary Keys 方法返回的 CComSafeArray
我正在使用 COM 库“Microsoft Scripting Runtime”(c:\windows\System32\scrrun.dll)中的 Scripting.Dictionary。我正在使用 import 来获取我的包装器,这些都在工作。添加一些项目后,我试图获取键列表,但我被卡住了。
我有办法。我可以从SAFEARRAY
Dictionary 中获取 of 键,但我想使用CComSafeArray
定义的类,<atlsafe.h>
但我无法找到一个好的结构。目前,构造函数抛出一个ATL
抱怨vartype
不匹配的断言。诚然,新构建的 CComSafeArray 有vartype
52428 个十六进制的 CCCC,这看起来可能像未初始化的内存。但是推断的类型看起来也不正确,我希望安全数组的 vartype 是字符串,但断言代码给出了 vartype 12,即 UI2。很奇怪。
无论如何,这对于熟悉这一点的人来说可能很容易。这是一个符合 SO 标准的控制台程序 Minimal, Complete, Verifiable, Example (MCVE)。
arrays - 使用脚本字典查找值,然后打印键
因此,在问了几个问题后,在其他人的帮助下,我现在有了以下用于宏的 VBA 脚本。它引用了客户代码的主列表以及它们代表的组(工作表“CustomerCodeReference”)。它应该比较提取报告中的值(在标有“ReportNumber”的列下)并找到该列中列出的客户代码,并在下一个可用的空列中返回解码的名称。
所以到目前为止,如果“ReportNumber”列包含报告编号:
"A20312345678901, A20212345678901" 它应该是比较客户代码(数字的前 4 个字符,在上面的例子中它们是 "A203, A202")在 "CustomerCodeReference" 表中找到它们,然后返回它们引用的组名在空列中(在本例中为“B Team,A Team”)
但是,目前的问题是,如果有多个值,它只是返回逗号,或者如果单元格中只有一个报告编号,则什么都不返回。(所以“A20312345678901,A20212345678901”将在空单元格中返回一个“,”)
似乎很接近,因为如果有 3 个值,它将返回 2 个逗号,但没有名称。有任何想法吗?