首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
您现在的位置: 程式碼之家 >> 編程語言 >  >> 更多程式語言 >> 程式設計疑難解答

VB6 數組下標非零起始時的拼接策略:保持下標不變的內存複製方法

     編輯:程式設計疑難解答

問題

若數組下標從非 0 開始(如 5-10),能否直接拼接另一數組且不改變下標?

VB6 特性

VB6 支持任意下標範圍 Dim arr(5 To 10)。拼接時需考慮下標映射,不能單純內存複製,因為邏輯下標不連續。

實現思路

Dim A(5 To 10) As Long, B(20 To 25) As Long
Dim C() As Long
' 目標:C(5 To 10) = A, C(11 To 16) = B (邏輯連續)
ReDim C(5 To 16)
' 複製 A
For i = 5 To 10: C(i) = A(i): Next
' 複製 B,下標偏移
For i = 20 To 25: C(i - 15) = B(i): Next  ' 11-16 對應 20-25

高效方案:MemCopy (RtlMoveMemory)

Private Declare Sub CopyMemory Lib "kernel32" Alias "RtlMoveMemory" (Dest As Any, Source As Any, ByVal Length As Long)
' 僅適用於數值類型數組且下標連續、元素大小固定時
CopyMemory C(5), A(5), 6 * 4  ' 複製 6 個 Long (4字節)
CopyMemory C(11), B(20), 6 * 4

注意:CopyMemory 需確保數組在內存中連續佈局,VB6 定長數組滿足條件。

  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved