乐筑天下

搜索
欢迎各位开发者和用户入驻本平台 尊重版权,从我做起,拒绝盗版,拒绝倒卖 签到、发布资源、邀请好友注册,可以获得银币 请注意保管好自己的密码,避免账户资金被盗
查看: 218|回复: 14

有数组吗?

[复制链接]

3

主题

88

帖子

4

银币

初露锋芒

Rank: 3Rank: 3Rank: 3

铜币
100
发表于 2008-5-2 13:35:20 | 显示全部楼层 |阅读模式
我正在开发一个程序,我需要创建一个信息列表。基于我做过的各种搜索,我现在可能比以往任何时候都更困惑。我不确定最好的方法是什么(脚本字典、数组、集合等)...)但是我想学习如何用阵列来做这件事。
这是独家新闻...
我正在开发的程序将创建一系列绘图,并向它们添加各种布局选项卡。首先,我需要根据文件名和与之相关的布局标签来收集绘图信息。
例如:绘图“A”可以有布局选项卡“A”、“B”、“C”。图纸' B '可以有布局选项卡' A1 ',' A2 ',' A3 ',' A4 ',' A5 '等等。
我目前正在从我的程序的listview框中收集信息(请参见随附的DVB)。当您单击“创建项目文件”按钮时,它会在列表视图中的条目间循环。但是我需要收集如下信息:
绘图' A'
布局选项卡' A'
布局选项卡' B'
布局选项卡' C'
绘图' B'
布局选项卡' A1'
布局选项卡' A2'
布局选项卡' A3'
布局选项卡' A4'
布局选项卡' A5'
等等....
那么我需要做数组的数组吗(好像一个简单的数组还不够让我难过)??我希望这有意义。

ddlk23wwtr5.png

ddlk23wwtr5.png

本帖以下内容被隐藏保护;需要你回复后,才能看到!

游客,如果您要查看本帖隐藏内容请回复
回复

使用道具 举报

13

主题

117

帖子

4

银币

初露锋芒

Rank: 3Rank: 3Rank: 3

铜币
173
发表于 2008-5-2 14:17:07 | 显示全部楼层
一种方法是使用集合。您可以创建一个具有名称(图形A)的DwgInfo对象,并创建一个可以存储布局名称的集合。
类似这样:
在名为DwgInfo的类模块中代码0]
然后在代码模块中:
  1. Public Sub Test()
  2.     Dim dwg1 As DwgInfo
  3.     Dim dwg2 As DwgInfo
  4.     Dim colDwg As Collection
  5.    
  6.     Dim i As Integer
  7.    
  8.     Set colDwg = New Collection
  9.    
  10.     Set dwg1 = New DwgInfo
  11.     Set dwg2 = New DwgInfo
  12.    
  13.     dwg1.Name = "Drawing A"
  14.     dwg1.add ("A")
  15.     dwg1.add ("B")
  16.     dwg1.add ("C")
  17.    
  18.     dwg2.Name = "Drawing B"
  19.     dwg2.add ("A1")
  20.     dwg2.add ("A2")
  21.     dwg2.add ("A3")
  22.    
  23.     For i = 1 To dwg1.Count
  24.       'do your stuff here
  25.         Debug.Print dwg1.Item(i)
  26.     Next i
  27.    
  28.     For i = 1 To dwg2.Count
  29.      'do your stuff here
  30.         Debug.Print dwg2.Item(i)
  31.     Next i
  32.    
  33.    
  34. End Sub

此外,在您的代码模块中,您可以有另一个集合来保存dwgInfo对象,然后迭代该集合来施展您的魔法。
如果使用数组,则必须调整它们的大小以添加元素,这样集合可能会比较慢,但对于动态调整大小的数据,它们更容易使用。
只是我的2美分。
回复

使用道具 举报

13

主题

117

帖子

4

银币

初露锋芒

Rank: 3Rank: 3Rank: 3

铜币
173
发表于 2008-5-2 14:25:47 | 显示全部楼层
我不确定集合是否是可行的方法,因为1)绘图/布局选项卡的数量会有所不同,2)您如何确定一个项目是否已经在集合中?没有EXISTS函数。那会是一个完全独立的函数吗?
我真的很想弄清楚这个数组的东西。它快把我逼疯了。
感谢您的输入。
回复

使用道具 举报

13

主题

117

帖子

4

银币

初露锋芒

Rank: 3Rank: 3Rank: 3

铜币
173
发表于 2008-5-2 15:41:40 | 显示全部楼层
Tuoni:
这是CREATE PROJECT FILES按钮后面的代码。
这是它在直接窗口中吐出的内容。
这是基于您在我的第一篇文章中的图像中看到的内容。
回复

使用道具 举报

3

主题

88

帖子

4

银币

初露锋芒

Rank: 3Rank: 3Rank: 3

铜币
100
发表于 2008-5-2 16:11:06 | 显示全部楼层
如果我正确地理解了您的目标(我可能没有...)David Blackmon发布的代码似乎完全符合您的要求——对于每个绘图,创建一个新的DwgInfo对象并将布局添加到其中,然后将其添加到集合中。如果需要,您可以编写一个在集合中循环的存在属性?
回复

使用道具 举报

3

主题

88

帖子

4

银币

初露锋芒

Rank: 3Rank: 3Rank: 3

铜币
100
发表于 2008-5-2 16:13:23 | 显示全部楼层

收集是执行此操作的最佳方式吗? 还是数组会更好? 只是好奇。
回复

使用道具 举报

13

主题

117

帖子

4

银币

初露锋芒

Rank: 3Rank: 3Rank: 3

铜币
173
发表于 2008-5-2 16:22:15 | 显示全部楼层
还有一个问题…
  1.     Dim dwg1 As DwgInfo
  2.     Dim dwg2 As DwgInfo

提供的代码有2个变暗。我猜,当我遇到更多的图画时,我怎么能在飞行中更“暗淡”
这是一段很长的时间,我已经盯着这段代码看了好几个小时,它变得模糊了,所以如果我问了一些“愚蠢”的问题,请原谅我。   
回复

使用道具 举报

3

主题

88

帖子

4

银币

初露锋芒

Rank: 3Rank: 3Rank: 3

铜币
100
发表于 2008-5-2 16:24:03 | 显示全部楼层

收集是执行此操作的最佳方式吗? 还是数组会更好? 只是好奇。
真的,这取决于你想用它们做什么。 与数组相比,集合有几个优点 - 添加它们很容易,与数组不同,您不必担心它有多满,是否有空间,空间在哪里; 其次,您可以按索引或按键引用集合中的项目,数组您只能使用索引... 从理论上讲,集合比数组慢,但是我怀疑你会注意到。 但是,要记住的一件事是,集合的索引从 1 开始,而不是 0
回复

使用道具 举报

116

主题

996

帖子

9

银币

顶梁支柱

Rank: 50Rank: 50

铜币
1466
发表于 2008-5-2 16:38:00 | 显示全部楼层
你应该能够在循环中创建对象,就像这样:(注意,未经测试)
  1. Public Sub Test()
  2.     Dim dwg As DwgInfo
  3.     Dim colDwg As Collection
  4.    
  5.     Dim i As Integer
  6.     Dim j As Integer
  7.     Set colDwg = New Collection
  8.    
  9.     For i = 1 To lvTech.ListItems.Count
  10.         Set dwg = new DwgInfo
  11.         dwg.Name = lvTech.ListItems(i).ListSubItems(3)
  12.         For j = 1 To dwg.Count
  13.             dwg.add( -insert the code for the layout in here- )
  14.         Next j
  15.         colDwg.add(dwg)
  16.     Next i
  17.    
  18. End Sub

无论如何,类似的东西。 您需要对此进行一些健全性检查 - 再次,未经测试
回复

使用道具 举报

13

主题

117

帖子

4

银币

初露锋芒

Rank: 3Rank: 3Rank: 3

铜币
173
发表于 2008-5-2 16:38:33 | 显示全部楼层
您可以调暗一个变量并反复使用它
  1. Public Sub Test()
  2.     Dim dwg1 As DwgInfo
  3.     Dim dwg2 As DwgInfo
  4.     Dim colDwg As Collection
  5.    
  6.     Dim i As Integer
  7.     Dim j As Integer
  8.    
  9.    
  10.     Set colDwg = New Collection
  11.    
  12.     Set dwg1 = New DwgInfo
  13.     Set dwg2 = New DwgInfo
  14.    
  15.     'loop thru the possible drawing names here and add them to the colDwg
  16.     For i = 1 To 5
  17.         Set dwg1 = New DwgInfo
  18.        'add another loop here to add each layout to the dwg1 object
  19.         dwg1.Name = "Drawing A" + Str(i)
  20.         dwg1.add ("A" + Str(i))
  21.         dwg1.add ("B" + Str(i))
  22.         dwg1.add ("C" + Str(i))
  23.         colDwg.add dwg1
  24.         Set dwg1 = Nothing
  25.     Next i
  26.    
  27.     For i = 1 To 5
  28.         Set dwg2 = colDwg.Item(i)
  29.         For j = 1 To dwg2.Count
  30.             Debug.Print dwg2.Item(j)
  31.         Next j
  32.    
  33.     Next i
  34.    
  35.   
  36. End Sub

回复

使用道具 举报

发表回复

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

  • 微信公众平台

  • 扫描访问手机版

  • 点击图片下载手机App

QQ|关于我们|小黑屋|乐筑天下 繁体中文

GMT+8, 2025-7-5 15:10 , Processed in 0.425364 second(s), 77 queries .

© 2020-2025 乐筑天下

联系客服 关注微信 帮助中心 下载APP 返回顶部 返回列表