2.9k Aufrufe
Gefragt in Anwendungen(Java,C++...) von
Also Leute, ich brauche professionelle Hilfe ^^
Ich muss in einem Projekt eine Liste mit einigen Werten Sortieren...
Die Liste ist von einer unbestimmten Länge und zwei Spalten breit
| 1 | Hallo |
| 2 | Dies ist ein Test |
| 3 | Den finde ich gut. |
Da die zweite Spalte in einem Listenfeld ist und die erste Spalte aus der zweiten
heraus erstellt wird, muss ich die Werte in ein zweidimensionales Array speichern.
Da ich allerdings nicht weiss wie lang die Liste ist, kann ich kein Array definieren.
Wie kann ich dennoch die Liste in einem Array speichern??

MFG Me

1 Antwort

0 Punkte
Beantwortet von theblackbird_ Mitglied (605 Punkte)
Moin,

VBA? VBA fuer Excel? Oder von welcher Sprache sprichst Du hier?

Was z.B. unter VBA-Excel funktioniert:

PseudoCode:

Sub ArrTest()
Dim vntBastelArray() As Variant 'BastelArray anlegen (ohne Dimensionen)
Dim vntZielArray() As Variant 'Zielarray ohne Dimensionen
Dim lngZeilenCounter As Long 'Zeilenzaehler fuer gefuellte Zeilen im Array
Dim lngSchleifenzaehler As Long 'Schleifenzaehler

ReDim vntBastelArray(1 To 2, 1 To 10) '2Spalten sollen es spaeter werden=> 1.Dimension also (1 to 2)
'Zeilen noch unbekannt also erstmal (1 to 10)
lngZeilenCounter = 0

For lngSchleifenzaehler = 1 To irgendwo 'Schleife unbekannter Laenge
If lngZeilenCounter >= UBound(vntBastelArray, 2) Then 'Wenn Zeilen in D2 nicht mehr reichen, dann Zeilen +10
ReDim Preserve vntBastelArray(1 To 2, 1 To (UBound(vntBastelArray, 2) + 10))
End If
If ZeileInArraySoll Then 'Fuellbedingung er fuellt?
lngZeilenCounter = lngZeilenCounter + 1 'gefuellte Zeilen mitzaehlen
vntBastelArray(2, lngZeilenCounter) = dannSchreibInArray 'Zeile fuellen
End If
If AbbruchBedingung = True Then Exit For 'Abbruch Schleife
Next
ReDim Preserve vntBastelArray(1 To 2, 1 To lngZeilenCounter) 'Array ggf. auf korrekte (gezaehlte) Zeilenzahl verkleinern
vntZielArray = Application.WorksheetFunction.Transpose(vntBastelArray) 'Array "drehen" (Zeile<>Spalte)
Stop 'ArrayKontrolle
End Sub


Da ReDim Preserve immer nur die jeweils letzte Dimension vergroessern kann und die spaetere "SpaltenZahl" im Array bekannt ist, wird das Array "quer" befuellt. Es hat also fix 2"Zeilen" und im ersten Step 10"Spalten". Die "SpaltenZahl" wird bei Bedarf erhoeht. Nach dem Aussprung aus der Schleife wird das BastelArray auf die tatsaechlich Groesse verkleinert und "gedreht" in ein neues Array geschrieben. So werden dann aus den 2"Zeilen" und z.B. 511"Spalten" desBastelArrays im ZielArray 2"Spalten" und 511"Zeilen".
Evtl. laesst sich ein solcher Ansatz in der von Dir verwendeten Sprache umsetzen.

Cu TheBlackBird ®
...