为什么我的数组在退出循环时会丢失所有数据

时间:2013-01-05 03:09:32

标签: vbscript

这是我在这里的第一篇文章,但阅读其他帖子帮助我解决了无数问题。你们真棒。所以感谢你们提供的所有帮助,并提前感谢你们给我的任何建议。

所以,我正在研究这个脚本,最终会随机从数组中的列表中选择数字。我在本节中尝试做的是读取NumberHistoryArray第三维的每个元素中的数字,并将第二维中相应的数字写入第三维中指示的次数{{1}数组。我也写了一个文本文件,只是为了看它是否有效,如果我遇到其他问题并需要知道输出是什么,就要引用一些东西。

修改的 NumberHistoryArray的第二个维度包含数字1到35.第三个维度包含写入numberDump数组时第二个维度中每个数字应重复的次数。

如果NumberHistoryArray(4,0,0)为4,例如,它应该将数字1写入四次,每次在numberDump(0,0,0)到(0,0,3)中,并动态调整numberDump ()根据需要拟合每个1.通过numberDump(0,0,3)回显numberDump(0,0,0)的结果应该是1 1 1 1.如果NumberHistoryArray(4,1,1)是7,它应该在numberDump(1,1,0)中将数字2写入7次 修改

当从Do循环中写入numberDump文本文件时,文本文件是完美的。如果我从Do循环内部回显数组中每个元素的内容,则内容是准确的。一旦在Do循环之外,内容为空白。任何人?

numberDump

2 个答案:

答案 0 :(得分:0)

有没有听说过对象的生命周期?你在哪里初始化对象:在循环内或循环外部,以便可以在整个sub routine / {{1 }}

您如何在function之外引用Array elements?每个loop都有一个element。因此,你可以通过index来推荐你。

e.g。 ArrayOne有3个index 0到2的元素。在你的循环中你可以引用Lower bound来获得第二个元素。

除了使用索引来引用元素之外,您还可以尝试在ArrayOne(1)debug mode上的immediate window期间查看数组元素。

因此,当您查看这些提示时,请向我们提供正确的完整代码以供进一步验证。

答案 1 :(得分:0)

此处的问题是,您要在每次迭代时将numberDump的第三维尺寸调整为x,并且每次迭代x都要重置n的值。例如,当n为0时,在Do循环结束时,x可能等于10.但是,在下一次迭代中,n为1时,x重置为0,最后将numberDump的第三维尺寸调整为0,删除大部分现有元素。

有两种方法可以解决这个问题:

  1. 跟踪x的所有次迭代n的最大值。根据需要使用该值调整numberDump的大小。

  2. 使用锯齿状数组(也称为数组数组)。在这种情况下,numberDump将是一个二维数组,其值是包含重复值的数组。这将允许每个值具有不同的长度,而不是三维数组,其中第三维始终具有相同的长度。