MoveMemory

10/09/2008 - 10:02 von Jürgen Schmitt | Report spam
Hallo NG,
es soll eine mehrdimensionales Array in ein anders verschoben/kopiert
werden. Beispiel:

Private Declare Sub MoveMemory Lib "kernel32.dll" Alias _
"RtlMoveMemory" (Destination As Any, Source As _
Any, ByVal Length As Long)

Dim quelle(1 To 3, 1 To 5) As Byte
Dim ziel(1 To 15) As Byte

Private Sub test()
Dim x, y, z As Byte
For x = 1 To 3 'Auffüllen
For y = 1 To 5
z = z + 1
quelle(i, j) = z
Next
Next
Dim b As Byte 'anz bytes, die verschoben werden
b = UBound(quelle, 2)
If LBound(quelle, 2) = 0 Then b = b + 1

Dim s As Byte 'Start Ziel
s = LBound(ziel)

For x = LBound(quelle, 1) To UBound(quelle, 1) ' 3x durchlaufen
Call MoveMemory(ziel(s), quelle(x, LBound(quelle, 1)), b)
Debug.Print ziel(s),ziel(s + 1),ziel(s + 2),ziel(s + 3),ziel(s + 4)
s = s + b
Next

End Sub

Debug.Print zeigt folgendes an:
1 6 11 2 7
6 11 2 7 12
11 2 7 12 3

Was mache ich wieder falsch ?
Vielen Dank für einen Hnweis.
gruss
 

Lesen sie die antworten

#1 Frank Landen
10/09/2008 - 14:02 | Warnen spam
Hi.

Jürgen Schmitt hat geschrieben:
es soll eine mehrdimensionales Array in ein anders
verschoben/kopiert werden.



Das sollte dir helfen:

Public Declare Sub CopyMemory Lib "kernel32" Alias "RtlMoveMemory" _
(Destination As Any, Source As Any, ByVal Length As Long)

Dim y(255) As Byte, z(255) As Byte

'y mit Daten füllen
'...

'Copymemory (Ziel, Quelle, Lànge)
CopyMemory z(0), y(0), 256

Grüße

Frank

Ähnliche fragen