首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 开发语言 > VB >

请教VB中怎么把一个数组直接赋给另一个数组

2012-01-29 
请问VB中如何把一个数组直接赋给另一个数组?比如dim A() as integer, B() as integer当A有了值后,怎么才能

请问VB中如何把一个数组直接赋给另一个数组?
比如 dim A() as integer, B() as integer
当A有了值后,怎么才能把A直接赋给B呢 ,我不想一个一个的循环赋值

另外还想问一下是否可以把一个记录集直接赋给另一个记录集? 
dim RS1 AS new adodb.recordset
dim RS2 AS new adodb.recordset
可以直接 rs1=rs2吗?
 

[解决办法]
数组应该可以用复制内存的方法.

而类(对象)应该不可以.

类(对象)名保存的好象是 指针之类的东西. 指向某个实类或对象.

直接赋值无用,在操作的时候,二个类或对象数据都会改变.
[解决办法]
不行,你这只是把rs1指向rs2
  
*****************************************************************************
欢迎使用CSDN论坛专用阅读器 : CSDN Reader(附全部源代码) 

http://feiyun0112.cnblogs.com/
[解决办法]
顶一楼
[解决办法]
b是动态数组直接:
b=a

set rs2=rs1
[解决办法]
补充一下,set rs2=rs1这样,注意对rs1的操作可能会影响到rs2...
[解决办法]

探讨
Dim a(2) As Integer, b(2) As Integer
  a(0) = 1
  a(1) = 2
  a(2) = 3
  b = a
出错啊,提示不能给数组赋值

[解决办法]
for i=0 to 2
 b(i)=a(i)
next i
[解决办法]
VB code
Private Declare Sub CopyMemory Lib "kernel32" Alias "RtlMoveMemory" (dest As Any, source As Any, ByVal numBytes As Long)Private Sub Command1_Click()  Dim a(2) As Integer, b(2) As Integer  a(0) = 1  a(1) = 2  a(2) = 3  CopyMemory ByVal VarPtr(b(0)), ByVal VarPtr(a(0)), 6    For i = 0 To 2    MsgBox b(i)  NextEnd Sub
[解决办法]
VB code
'可以将数组赋给一个包含数组的VariantPrivate Sub Form_Load()Dim a(2) As IntegerDim b As VariantDim i  a(0) = 1  a(1) = 2  a(2) = 3  b = a 'b是一个包含数组的Variant  For i = 0 To UBound(b)  MsgBox b(i)  Next  End Sub
[解决办法]
CopyMemory是高效的方法,但对于不大的数组b=a更合适...
对于记录集,你还可以用clone方法复制副本:
set rs2=rs.clone
然后执行:
rs1.requery

这样rs1和rs2就脱离关联了...
[解决办法]
探讨
CopyMemory是高效的方法,但对于不大的数组b=a更合适...
对于记录集,你还可以用clone方法复制副本:
set rs2=rs.clone
然后执行:
rs1.requery

这样rs1和rs2就脱离关联了...

[解决办法]
探讨
比如  dim A() as integer, B() as integer
当A有了值后,怎么才能把A直接赋给B呢  ,我不想一个一个的循环赋值

另外还想问一下是否可以把一个记录集直接赋给另一个记录集?
dim RS1 AS new adodb.recordset
dim RS2 AS new adodb.recordset
可以直接  rs1=rs2吗?


[解决办法]
数组可以直接赋值,不过目标数组必须是动态数组:

http://www.m5home.com/blog/article.asp?id=262
[解决办法]
数据集可以用clone方法
[解决办法]
Private Declare Sub CopyMemory Lib "kernel32" Alias "RtlMoveMemory" (Destination As Any, Source As Any, ByVal Length As Long)

Dim bytes As Long
Dim intSrc(1 To 6000000) As Integer
Dim intDest(1 To 6000000) As Integer



bytes = (UBound(intSrc) - LBound(intSrc) + 1) * Len(intSrc(LBound(intSrc)))

CopyMemory intDest(LBound(intDest)), intSrc(LBound(intSrc)), bytes
End Sub
[解决办法]

探讨
引用:
Dim a(2) As Integer, b(2) As Integer
  a(0) = 1
  a(1) = 2
  a(2) = 3
  b = a
出错啊,提示不能给数组赋值

Dim a(2) As Integer, b() As Integer
  a(0) = 1
  a(1) = 2
  a(2) = 3
b = a
看清上面有回复,b是动态数组!

热点排行