ReDim 在 VB6 中保留为多维数组

2024-04-30

我正在使用 VB6,我需要做一个ReDim Preserve到多维数组:

 Dim n, m As Integer
    n = 1
    m = 0
    Dim arrCity() As String
    ReDim arrCity(n, m)
    
    n = n + 1
    m = m + 1
    ReDim Preserve arrCity(n, m)

每当我按照我写的那样做时,我都会收到以下错误:

运行时错误9:下标超出范围

因为我只能更改最后一个数组维度,所以在我的任务中我必须更改整个数组(在我的示例中为 2 个维度)!

有没有解决方法或其他解决方案?


正如您正确指出的那样,人们可以ReDim Preserve仅数组的最后一个维度(重新调暗声明 http://msdn.microsoft.com/en-us/library/aa266231.aspx在 MSDN 上):

如果使用 Preserve 关键字,则只能调整最后一个数组的大小 维度,并且您根本无法更改维度数。为了 例如,如果您的数组只有一维,您可以调整其大小 维度,因为它是最后也是唯一的维度。但是,如果您的 数组有两个或多个维度,您只能更改其中的大小 最后一个维度并仍然保留数组的内容

因此,要决定的第一个问题是二维数组是否是最适合该工作的数据结构。也许,一维数组更适合您需要做的事情ReDim Preserve?

另一种方法是使用锯齿状数组彼得·吉尔肯斯的建议 https://stackoverflow.com/a/16369934/262403。 VB6 中不直接支持锯齿状数组。在 VB6 中编写“数组的数组”的一种方法是声明一个数组Variant并使每个元素成为所需类型的数组(String在你的情况下)。演示代码如下。

另一种选择是实施Preserve部分由你自己承担。为此,您需要创建要保留的数据副本,然后用它填充重新调整尺寸的数组。

Option Explicit

Public Sub TestMatrixResize()
    Const MAX_D1 As Long = 2
    Const MAX_D2 As Long = 3

    Dim arr() As Variant
    InitMatrix arr, MAX_D1, MAX_D2
    PrintMatrix "Original array:", arr

    ResizeMatrix arr, MAX_D1 + 1, MAX_D2 + 1
    PrintMatrix "Resized array:", arr
End Sub

Private Sub InitMatrix(a() As Variant, n As Long, m As Long)
    Dim i As Long, j As Long
    Dim StringArray() As String

    ReDim a(n)
    For i = 0 To n
        ReDim StringArray(m)
        For j = 0 To m
            StringArray(j) = i * (m + 1) + j
        Next j
        a(i) = StringArray
    Next i
End Sub

Private Sub PrintMatrix(heading As String, a() As Variant)
    Dim i As Long, j As Long
    Dim s As String

    Debug.Print heading
    For i = 0 To UBound(a)
        s = ""
        For j = 0 To UBound(a(i))
            s = s & a(i)(j) & "; "
        Next j
        Debug.Print s
    Next i
End Sub

Private Sub ResizeMatrix(a() As Variant, n As Long, m As Long)
    Dim i As Long
    Dim StringArray() As String

    ReDim Preserve a(n)
    For i = 0 To n - 1
        StringArray = a(i)
        ReDim Preserve StringArray(m)
        a(i) = StringArray
    Next i
    ReDim StringArray(m)
    a(n) = StringArray
End Sub
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

ReDim 在 VB6 中保留为多维数组 的相关文章

  • 更改API数据输出的布局

    我是 API 集成和 PHP 的新手 我最近将 VIN 解码器集成到我的应用程序中 在输入框中输入车辆的 VIN 选择提交 然后就会显示 API 数据库中有关该车辆的所有信息 数据存储为关联数组 其中包含类别及其相应元素 例如 对于 VIN
  • C++从文件中读取整数并保存到数组中

    我正在制作一个仅从文本文件读取整数的程序 我想创建一个读取整数并将它们存储在数组中的函数 以便稍后可以使用该数组通过冒泡排序对它们进行排序 这是我到目前为止所得到的 但我得到的输出是一些随机的 803234 数字 void read int
  • 需要解释搜索最小大和的算法

    我正在解决 Codility 问题作为练习 但无法回答其中一个问题 我在互联网上找到了答案 但我不明白这个算法是如何工作的 有人可以引导我逐步完成它吗 这是问题 You are given integers K M and a non em
  • 读取文本文件并将列存储在数组中

    我的文件看起来像这样 01 01 5 00 1 50 7 50 02 01 4 00 3 00 12 00 02 02 3 00 4 00 12 00 03 01 4 50 3 00 13 50 03 01 7 50 2 50 18 75
  • 将数组字段组合成单个数组字段 mongo

    我正在使用 mongo 版本 3 4 3 我的文档存储在 mongo 中 如下所示 id ObjectId 5ad5ab8aaf2808b739ba6ab2 ResumeId 105839064 ResumeDetails WorkProf
  • 调整ArrayBuffer的大小

    如果我想创建一个数组缓冲区 我会写 var buff new ArrayBuffer size 但是如何调整现有缓冲区的大小呢 我的意思是 在缓冲区末尾添加更多字节 ArrayBuffer 本身没有设置 有set https develop
  • 如何创建没有循环关系的树形表?

    CREATE TABLE TREE node1 id UUID REFERENCES nodes object id NOT NULL node2 id UUID REFERENCES nodes object id NOT NULL CO
  • 将数组作为参数传递

    如果我们修改作为方法内参数传递的数组的内容 则修改是在参数的副本而不是原始参数上完成的 因此结果不可见 当我们调用具有引用类型参数的方法时 会发生什么过程 这是我想问的代码示例 using System namespace Value Re
  • 如何将变量插入 PHP 数组?

    我在网上查了一些答案 但都不是很准确 我希望能够做到这一点 id result id info array id Example echo info 0 这有可能吗 您需要的是 不推荐 info array id Example varia
  • 合并 JavaScript 数组中的重复项

    我有一个愚蠢的问题 乍一看似乎很容易解决 但结果却很棘手 我有一个对象数组 每个对象都有两个属性 id 和 value id 2 value 10 id 4 value 3 id 2 value 2 id 1 value 15 我想编写一个
  • OleLoadPicturePath 是否已以非向后兼容的方式更改?

    我最近遇到一个问题 我能够在一台 PC 上将图标添加到 VB6 表单 它运行良好 但他们无法在第二台 PC 上运行 编译它 结果发现图标文件是 32 位的 包括 Alpha 通道 这就是问题所在 但令我惊讶的是 这是一个依赖于系统的功能 在
  • ASP.NET MVC 中的经典 ASP (C#)

    我有一个应用程序想要 最终 转换为 ASP NET MVC 我想要进行全面的服务升级 到 ASP NET 但想要使用当前的 ASP 内容来运行当前的功能 这样我就可以在对新框架进行增量升级的同时升级小部分 该站点严重依赖于不太成熟的 VB6
  • 将数组排序为第一个最小值、第一个最大值、第二个最小值、第二个最大值等

    编写一个JS程序 返回一个数组 其中第一个元素是第一个最小值 第二个元素是第一个最大值 依此类推 该程序包含一个函数 该函数接受一个参数 一个数组 该函数根据要求返回数组 输入示例 array 2 4 7 1 3 8 9 预期输出 1 9
  • 结构体指针的动态数组

    我必须使用以下代码块来完成学校作业 严格不进行任何修改 typedef struct char firstName char lastName int id float mark pStudentRecord pStudentRecord
  • 在 Javascript 中减少/分组数组

    基于this https stackoverflow com a 40774906 3254598例如 我想以稍微不同的方式按对象进行分组 结果应该如下 key audi items make audi model r8 year 2012
  • 如何在 Javascript 中基于嵌套值过滤数组

    我有一个数组 我试图根据某个嵌套值进行过滤 而不获取任何其他元素 const arrayData country Country X games gameTitle Game1 players name John status Active
  • 正则表达式可以与 C++ 中的字符数组一起使用吗

    我正在开发一个无法使用字符串库文件的程序 而是使用字符数组 我能够使用正则表达式 并且想知道是否有办法使用正则表达式和字符数组 甚至正则表达式和单个字符 我问的原因是当我尝试在匹配中使用我的 char 数组时 xUtility 会抛出一堆来
  • 在 MongoDB 中查找具有字符串 ID 数组的文档

    我有一个 id 字符串数组 我想将其与 find 函数一起使用 db companies find id in arr arr看起来像这样 563a2c60b511b7ff2c61e938 563a2c60b511b7ff2c61e8b7
  • 在 PHP 中使用数组来比较用户名/密码

    我有以下 php 脚本 其中有一个用户名和密码 Username user1 Password pass1 if isset POST submitform Clean up the input values foreach POST as
  • 在 C# 中何时使用 ArrayList 而不是 array[]?

    我经常使用一个ArrayList而不是 正常 array 当我使用时 我感觉好像我在作弊 或懒惰 ArrayList 什么时候可以使用ArrayList在数组上 数组是强类型的 并且可以很好地用作参数 如果您知道集合的长度并且它是固定的 则

随机推荐

  • windows下无法用emacs + sbcl启动slime

    我想配置我的 emacs 以使用 SLIME 和 SBCL emacs 文件如下所示 add to list load path D app slime setq inferior lisp program sbcl require sli
  • 选择器资源可以使用样式中定义的颜色吗?

    我试图在选择器的样式中使用定义的颜色 但它导致了 Resources NotFoundException 首先 我向 attr xml 添加了一个新属性
  • 如何在 Xcode 7.3.1 的属性检查器中设置自定义展开转场动画

    我正在尝试通过 Xcode 7 2 1 中的故事板设置自定义展开转场动画 如果我在文档大纲中选择展开转场 我会看到属性检查器中有一个可用的类选项来提供 UIStoryboardSegue 类 但是 当我在那里设置自定义 Segue 类并运行
  • Embeddable、Hibernate 中的多对一关系

    我有一个场景Embeddablehibernate 中的类使用Entity 根据我在SO和其他链接上找到的各种答案 我们可以写 ManyToOne OneToMany里面一个Embeddable class 但这样做让我HibernateM
  • 用 Python 重复读取 CSV?

    我正在尝试根据我已有的 csv 检查提取的数据的值 它只会循环遍历 CSV 的行一次 我只能检查 feed items 的一个值 我需要在某处重置某个值吗 有没有更好 更有效的方法来做到这一点 谢谢 orig csv reader open
  • 如何在 Visual Studio 代码中切换文本大小写

    如何在 Visual Studio Code 中切换突出显示文本的大小写 VS 通过 CTRL SHIFT U 和 CTRL U 允许这样做 是否有一个命令绑定可以设置来执行此操作 或者默认情况下是其他组合键 Echoing 只是另一个开发
  • 正则表达式匹配时间

    我希望我的用户能够输入时间表单 如果需要更多信息 用户用它来表示完成任务需要多少时间 如果填满 它将保存在数据库中 这是我所拥有的 0 1 0 9 2 0 4 0 5 0 9 0 5 0 9 它匹配空表单或 01 30 和 01 30 00
  • 如何使用PIL读取原始图像?

    我有一个原始图像 其中每个像素对应一个 16 位无符号整数 我正在尝试使用 PIL Image fromstring 函数进行读取 如以下代码所示 if name main if len sys argv 4 print Error mis
  • 我可以停止 CakePHP 获取查询的所有行吗?

    我正在使用 CakePHP 和 modelName gt find 调用选择相当多的行 可能是数百行 通常 在 PHP MySQL 中这当然不会成为问题 因为您在 while 循环中获取它们 但是 CakePHP 将所有行加载到一个数组中
  • 标准化设备坐标

    我正在编写一个处理 2D 图形形状的库 I m just wondering why should my coordinate system range from 1 1 for both the x and y axis instead
  • Angular 6:i18n:如何更新已翻译的现有 .xlf 文件?

    在 Angular 6 中 现在我想我理解了如何制作 i18n 文件并利用它们 例如https angular io guide i18n https angular io guide i18n 我想知道如何维护所述文件 如果我进入并更改
  • Docker - Spring Boot 应用程序 - 无法访问本地主机上的 MySql 服务器

    如何将在 Docker 中运行的 Spring Boot JAR 应用程序连接到我计算机上的 MySql 服务器 我尝试了不同的帖子 但这没有帮助 在我的 Spring Boot application properties 中 我有 sp
  • 如何在 R 中导入 matlab 表

    我有一个matlab mat文件与表数据类型我想将其导入 R 中 我为此使用 readMat R 正在将其作为列表读取 之后有没有办法将列表转换为 R 中的数据帧或表格格式 当我使用as dataframe我收到以下错误 Error in
  • 名称中带有点的 php 对象属性

    我有 mysql 表 其中包含 操作 日期 操作 名称 等列 将该表数据作为对象获取后 mysqli gt fetch object 我得到这个 行的 print r stdClass Object id gt 2 operation da
  • Composer - 添加 git 存储库而不使用composer.json

    我尝试从 github designmodo Flat UI 添加存储库 使用配置并收到错误No valid composer json was found in any branch or Your requirements could
  • Autodesk Forge BIM 360 API - 激活服务类型

    我们一直在使用 Forge API 在 BIM 360 中自动设置项目 但似乎无法找到自动激活服务 Field Glue 等 的方法 直觉上 我认为 service types 属性是执行此操作的方法 但服务没有激活 1 service t
  • 生产中未找到 symfony 2 路线

    我有这样的路线 login register 等 在开发环境中工作正常 起初 当我尝试通过 app php 而不是 app dev php 访问我的网站时 出现 404 错误 然后我跟着这个建议 https stackoverflow co
  • 可以将sharedPrefrence与Coroutine kotlin一起使用吗

    我已经注射了sharedPreference in ViewModel 我可以在嵌入 Coroutine 作用域时使用 Android 特定资源吗 当 ViewModel 失去作用域时 Coroutine 作用域会自动挂起 我的意思是 如果
  • 在日期 presto SQL 上运行总和

    我正在尝试使用 Presto SQL 根据下面的示例数据计算某个日期内 t 列和 s 列的累积总和 Date T S 1 2 19 2 5 2 1 19 5 1 3 1 19 1 1 我想得到 Date T S cum T cum S 1
  • ReDim 在 VB6 中保留为多维数组

    我正在使用 VB6 我需要做一个ReDim Preserve到多维数组 Dim n m As Integer n 1 m 0 Dim arrCity As String ReDim arrCity n m n n 1 m m 1 ReDim