问题标签 [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.

0 投票
2 回答
481 浏览

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) 则不行

有任何想法吗?

0 投票
1 回答
1921 浏览

excel - 类不支持自动化或不支持预期的接口

我正在导入一种用于在 Excel 中报告的 CSV 安全文件。该文件基本上具有以下格式:

该报告是一种矩阵,如下所示:

我能想到的最简单的方法是执行以下步骤:

  1. 打开文件并将所有内容放入 3 个多级字典(一个用于用户,一个用于角色,一个用于权限),使用Scripting.Dictionary.
  2. 创建一个工作表并根据字典构建矩阵。

显然,实际的文件格式和实现要复杂一些,但这就是它的要点。

它适用于最大约 10Mb 的文件,但是当文件开始超过该数量(数千个用户和角色)时,我收到以下错误:

这发生在以下行:

如果我查看进程,EXCEL.EXE 在引发错误的地方使用了大约 1.5Gb 的 RAM。如果我结束,而不是调试然后关闭工作簿,我会收到以下消息:

我猜我的 RAM 用完了,尽管我的 8Gb 中仍有大约 4Gb 可用。

我的问题是:我如何重构我的代码,以便它在不使用这么多 RAM 的情况下做到这一点?

文件中的部分可能有不同的顺序(就像!Permissions可能在!Users部分之前一样)。

0 投票
1 回答
79 浏览

arraylist - 如何附加到作为字典中键值的数组?

如果我这样设置字典:

我问一个用户他的名字。

然后我向用户询问五个数字。

并使用ArrayList将五个提示数字放入任何数组

name如果我在我设置的字典中添加一个键。

我可以在我之前设置的字典中添加myArrayList一个值吗?namemyDict

myArrayList如果是这样,如果我要循环五个数字问题,我该如何追加或添加?

0 投票
1 回答
805 浏览

arrays - scripting.dictionary 中的 VBA 重写数组

我正在尝试创建一个字典,每个键都是我创建的名称,每个项目都是一个包含三个对象的数组:一个字符串、一个整数和一个 SOAP 请求结果的数组。

我像这样初始化数组:

我有一个函数“getTheRisk”,它返回一个 X x 4 数组(它是一个 SOAP 请求。我不知道会返回多少个结果,但每个结果将返回四个值。)

然后我想将该结果存储到我的字典中项目的第三个元素中,尝试如下:

这编译并运行得很好,但是在分配数组之后,它在字典中显示为空:

在此处输入图像描述

getTheRisk 函数返回如下内容:

在此处输入图像描述

如何将 dict 中的数组设置为 SOAP 请求的结果?

0 投票
1 回答
160 浏览

vba - scripting.dictionary 中的 VBA 额外键/项对

这段代码工作了好几天,遍历字典就好了。循环开始中断,我在字典中有额外的键,我不知道它们来自哪里。

我正在使用以下内容创建 scripting.dictionary:

之后,对象为空,如手表所示:

在此处输入图像描述

然后我添加我的第一个密钥/项目对:

在运行这行代码之后,我现在有了这个:

在此处输入图像描述

这两个额外的键(第 2 项和第 3 项)是从哪里来的?!这是一个问题,因为稍后在我的代码中我使用:

这个循环中断了,因为它开始引用空的键。这似乎直到现在才发生,并且代码已经运行了几天。(我在代码的其他地方更改了一些东西,但与此完全无关。)

让我知道我是否在做任何可笑的事情,或者遗漏了一些明显的事情,谢谢!

0 投票
1 回答
79 浏览

html - 将 HTML 表中的所有项目存储到脚本字典中,同时添加重复值

我想将在 html 表中找到的所有项目存储在字典中。

当我有重复项时我会遇到问题,因为我下面的代码不会再次存储该项目,并且我需要此表中的所有项目,即使有任何重复项。

如果我有像Round 38这样的重复值,其中另一个Match3具有相同的轮数,我想再次列出这些重复值。

结果应如下所示:

第38轮

比赛1

比赛2

第37轮

比赛1

比赛2

第38轮

比赛3

比赛4

.....................

0 投票
2 回答
1354 浏览

vba - 如何将数组添加到脚本字典中的单元格下拉列表中?

我有来自不同应用程序的数据转储。我想从数据转储中的奇异列(具有可变长度)中获取唯一值。一旦我有了唯一值,我希望将它们从数据验证中调用到 .incelldropdown 中。除了我得到错误的最后一部分之外,我已经弄清楚了大部分内容:

见下文:

调试器说问题出d.Keys()在脚本。但是,我尝试Join (d.Keys(), ",")在数据验证中使用并调用该新变量转换为字符串,这会产生相同的错误。我在 Excel 2010 上运行它。

我认为这也可能是变体数组是 2D 并且它需要是 1D 的问题,但似乎并非如此。

0 投票
2 回答
44 浏览

excel - UserForm 根据 cobo 值识别正确的工作表

我有一个包含客户信息的工作簿。每个客户都有一张表格,每张表格都标有客户的唯一 ID。我想启动一个用户窗体,用户将从一个组合框中选择一个客户端。然后,来自相应工作表最后一行的数据填充用户窗体。

在同一工作簿中的其他代码中,我使用的是脚本字典,但它们都与特定工作表中的特定范围相关联。我不知道如何为 UserForm 编写代码以在所有工作表中搜索以找到与 cobo_ClientID 字段中的值具有相同名称的工作表,然后从具有 MAX 更新日期的行中引入正确的数据元素。

这是我在其他领域一直在使用的脚本字典的示例:

0 投票
1 回答
913 浏览

c++ - 如何初始化 SAFEARRAY 从 Scripting.Dictionary Keys 方法返回的 CComSafeArray

我正在使用 COM 库“Microsoft Scripting Runtime”(c:\windows\System32\scrrun.dll)中的 Scripting.Dictionary。我正在使用 import 来获取我的包装器,这些都在工作。添加一些项目后,我试图获取键列表,但我被卡住了。

我有办法。我可以从SAFEARRAYDictionary 中获取 of 键,但我想使用CComSafeArray定义的类,<atlsafe.h>但我无法找到一个好的结构。目前,构造函数抛出一个ATL抱怨vartype不匹配的断言。诚然,新构建的 CComSafeArray 有vartype52428 个十六进制的 CCCC,这看起来可能像未初始化的内存。但是推断的类型看起来也不正确,我希望安全数组的 vartype 是字符串,但断言代码给出了 vartype 12,即 UI2。很奇怪。

无论如何,这对于熟悉这一点的人来说可能很容易。这是一个符合 SO 标准的控制台程序 Minimal, Complete, Verifiable, Example (MCVE)。

0 投票
1 回答
50 浏览

arrays - 使用脚本字典查找值,然后打印键

因此,在问了几个问题后,在其他人的帮助下,我现在有了以下用于宏的 VBA 脚本。它引用了客户代码的主列表以及它们代表的组(工作表“CustomerCodeReference”)。它应该比较提取报告中的值(在标有“ReportNumber”的列下)并找到该列中列出的客户代码,并在下一个可用的空列中返回解码的名称。

所以到目前为止,如果“ReportNumber”列包含报告编号:

"A20312345678901, A20212345678901" 它应该是比较客户代码(数字的前 4 个字符,在上面的例子中它们是 "A203, A202")在 "CustomerCodeReference" 表中找到它们,然后返回它们引用的组名在空列中(在本例中为“B Team,A Team”)

但是,目前的问题是,如果有多个值,它只是返回逗号,或者如果单元格中只有一个报告编号,则什么都不返回。(所以“A20312345678901,A20212345678901”将在空单元格中返回一个“,”)

似乎很接近,因为如果有 3 个值,它将返回 2 个逗号,但没有名称。有任何想法吗?