ich auf diese Frage gestolpert, während Schlagen diese Straße blockieren mich REDIM müssen. Am Ende habe ich ein Stück Code geschrieben, das sehr schnell mit diesem ReDim Preserve
auf einem neu dimensionierten Array (erste oder letzte Dimension) zu tun hat. Vielleicht hilft es anderen, die das gleiche Problem haben.
Also für die Verwendung, nehmen wir an, Sie haben Ihr Array ursprünglich als MyArray(3,5)
, und Sie möchten die Abmessungen (zuerst auch!) Größer machen, sagen wir einfach MyArray(10,20)
. Sie wären es gewohnt, so etwas richtig zu machen?
Aber leider gibt das einen Fehler zurück, weil Sie versucht haben, die Größe der ersten Dimension zu ändern. Also mit meiner Funktion, würden Sie nur so etwas wie dies stattdessen tun:
MyArray = ReDimPreserve(MyArray,10,20)
nun das Array größer ist, und die Daten erhalten bleiben. Ihr ReDim Preserve
für ein Multi-Dimension-Array ist abgeschlossen. :)
Und last but not least, die wunderbare Funktion: ReDimPreserve()
'redim preserve both dimensions for a multidimension array *ONLY
Public Function ReDimPreserve(aArrayToPreserve,nNewFirstUBound,nNewLastUBound)
ReDimPreserve = False
'check if its in array first
If IsArray(aArrayToPreserve) Then
'create new array
ReDim aPreservedArray(nNewFirstUBound,nNewLastUBound)
'get old lBound/uBound
nOldFirstUBound = uBound(aArrayToPreserve,1)
nOldLastUBound = uBound(aArrayToPreserve,2)
'loop through first
For nFirst = lBound(aArrayToPreserve,1) to nNewFirstUBound
For nLast = lBound(aArrayToPreserve,2) to nNewLastUBound
'if its in range, then append to new array the same way
If nOldFirstUBound >= nFirst And nOldLastUBound >= nLast Then
aPreservedArray(nFirst,nLast) = aArrayToPreserve(nFirst,nLast)
End If
Next
Next
'return the array redimmed
If IsArray(aPreservedArray) Then ReDimPreserve = aPreservedArray
End If
End Function
ich dies wie 20 Minuten schrieb, so gibt es keine Garantien. Aber wenn Sie es verwenden oder erweitern möchten, fühlen Sie sich frei. Ich hätte gedacht, dass jemand hier oben schon einen Code wie diesen gehabt hätte, offensichtlich nicht. Also, hier gehts mit anderen Gearheads.
VB6 bietet keine Unterstützung für Arrays von Arrays –
@EuroMicelli ja es tut. Sie können ein 1-D-Array mit Varianten haben, und die Varianten können Arrays enthalten. – MarkJ