Discussion:
Mehrdimensionales Array sortieren
(zu alt für eine Antwort)
M. Hilgers
2005-06-13 11:02:01 UTC
Permalink
Hallo,

wie kann ich auf einfachem Wege ein mehrdimensionales Array sortieren?

Grüße
Herfried K. Wagner [MVP]
2005-06-13 11:31:09 UTC
Permalink
Hallo M.!
Post by M. Hilgers
wie kann ich auf einfachem Wege ein mehrdimensionales Array sortieren?
Dazu müsstest du zuerst einmal definieren, wie nach der Sortierung die Daten
im Array stehen sollen.
--
M S Herfried K. Wagner
M V P <URL:http://dotnet.mvps.org/>
V B <URL:http://classicvb.org/petition/>
M. Hilgers
2005-06-13 13:37:09 UTC
Permalink
Dim arrControls(1, 2) As Object

For i = 0 To Me.Controls.Count - 1

ReDim arrControls(Me.Controls.Count, 2)

c = Me.Controls(i)

cName = Mid(c.GetType.ToString, InStrRev(c.GetType.ToString, ".") + 1)

arrControls(i, 1) = cName.ToString

arrControls(i, 2) = c.Name

Next

arrControls.Sort(arrControls) ---> Fehlermeldung, dass ein mehrdimensionlaes Array nicht sortiert werden kann...



Kann mir jemadn weiterhelfen...?
Post by Herfried K. Wagner [MVP]
Hallo M.!
Post by M. Hilgers
wie kann ich auf einfachem Wege ein mehrdimensionales Array sortieren?
Dazu müsstest du zuerst einmal definieren, wie nach der Sortierung die Daten
im Array stehen sollen.
--
M S Herfried K. Wagner
M V P <URL:http://dotnet.mvps.org/>
V B <URL:http://classicvb.org/petition/>
Peter Fleischer
2005-06-13 13:43:38 UTC
Permalink
M.,
Sort geht nur mit ein-dimensionalen Arrays. Entweder du nutzt eigene Objekte
in einem eindimensionalen Array und einen passenden Comparer oder du nutzt
jagged Arrays.

Peter


"M. Hilgers" <***@pcagenten.de> schrieb im Newsbeitrag news:***@TK2MSFTNGP12.phx.gbl...
Dim arrControls(1, 2) As Object
For i = 0 To Me.Controls.Count - 1
ReDim arrControls(Me.Controls.Count, 2)
c = Me.Controls(i)
cName = Mid(c.GetType.ToString, InStrRev(c.GetType.ToString, ".") + 1)
arrControls(i, 1) = cName.ToString
arrControls(i, 2) = c.Name
Next
arrControls.Sort(arrControls) ---> Fehlermeldung, dass ein mehrdimensionlaes
Array nicht sortiert werden kann...

Kann mir jemadn weiterhelfen...?
Post by Herfried K. Wagner [MVP]
Hallo M.!
Post by M. Hilgers
wie kann ich auf einfachem Wege ein mehrdimensionales Array sortieren?
Dazu müsstest du zuerst einmal definieren, wie nach der Sortierung die Daten
im Array stehen sollen.
--
M S Herfried K. Wagner
M V P <URL:http://dotnet.mvps.org/>
V B <URL:http://classicvb.org/petition/>
M. Hilgers
2005-06-14 08:07:20 UTC
Permalink
Wie kann ich denn nun aus unten angefügtem Code ein Jagged Array erstellen
und sortieren? Habe dazu schon in mehreren Foren gesucht, aber leider nichts
passendes gefunden. Das Problem wird immer nur mit c# gelöst, jedoch nicht
mit vb.net, das ich einsetze.
Post by Peter Fleischer
M.,
Sort geht nur mit ein-dimensionalen Arrays. Entweder du nutzt eigene
Objekte in einem eindimensionalen Array und einen passenden Comparer oder
du nutzt jagged Arrays.
Peter
Dim arrControls(1, 2) As Object
For i = 0 To Me.Controls.Count - 1
ReDim arrControls(Me.Controls.Count, 2)
c = Me.Controls(i)
cName = Mid(c.GetType.ToString, InStrRev(c.GetType.ToString, ".") + 1)
arrControls(i, 1) = cName.ToString
arrControls(i, 2) = c.Name
Next
arrControls.Sort(arrControls) ---> Fehlermeldung, dass ein
mehrdimensionlaes Array nicht sortiert werden kann...
Kann mir jemadn weiterhelfen...?
Post by Herfried K. Wagner [MVP]
Hallo M.!
Post by M. Hilgers
wie kann ich auf einfachem Wege ein mehrdimensionales Array sortieren?
Dazu müsstest du zuerst einmal definieren, wie nach der Sortierung die Daten
im Array stehen sollen.
--
M S Herfried K. Wagner
M V P <URL:http://dotnet.mvps.org/>
V B <URL:http://classicvb.org/petition/>
Peter Fleischer
2005-06-14 08:36:21 UTC
Permalink
Post by M. Hilgers
Wie kann ich denn nun aus unten angefügtem Code ein Jagged Array
erstellen und sortieren? Habe dazu schon in mehreren Foren gesucht,
aber leider nichts passendes gefunden. Das Problem wird immer nur mit
c# gelöst, jedoch nicht mit vb.net, das ich einsetze.
Schau mal in der Hilfe unter "Arrays of Arrays".

Du erhöhst Deine Chance, dass Deine Frage überhaupt gelesen und
qualifiziert beantwortet wird, wenn Du Deinen Realnamen im Absender
einstellst (Vor- und Zuname).

Peter
Marco Hilgers
2005-06-14 11:43:26 UTC
Permalink
und wie geht das Jagged Array zu sortieren? Wenn ich
For i = 0 To Me.Controls.Count - 1

c = Me.Controls(i)

cName = c.GetType.ToString

arrName(i) = Mid(cName, InStrRev(cName, ".") + 1)

arrEigenschaften(i, 0) = c.Location.X

arrEigenschaften(i, 1) = c.Location.Y

arrEigenschaften(i, 2) = c.Text

arrEigenschaften(i, 3) = c.Name

arrEigenschaften(i, 4) = c.Tag

arrElemente(0) = arrName

arrElemente(1) = arrEigenschaften

Next i

arrElemente.Sort(arrElemente(0))

ausführe, wird immer nur die erste Spalte sortiert.
Post by Peter Fleischer
Post by M. Hilgers
Wie kann ich denn nun aus unten angefügtem Code ein Jagged Array
erstellen und sortieren? Habe dazu schon in mehreren Foren gesucht,
aber leider nichts passendes gefunden. Das Problem wird immer nur mit
c# gelöst, jedoch nicht mit vb.net, das ich einsetze.
Schau mal in der Hilfe unter "Arrays of Arrays".
Du erhöhst Deine Chance, dass Deine Frage überhaupt gelesen und
qualifiziert beantwortet wird, wenn Du Deinen Realnamen im Absender
einstellst (Vor- und Zuname).
Peter
Peter Fleischer
2005-06-14 11:58:44 UTC
Permalink
Marco,
so richtig verstanden habe ich nicht, was du willst. Wenn du die in der
Array-Klasse integrierte Sort-Methode nutzt, dann wird immer einspaltig
sortiert. Anders sehe ich auch keinen Sinn. Wenn du es anders haben willst,
dann bau deinen eigenen Comparer, den du in einem Array mit eigenen Objekten
nutzt.

Peter


"Marco Hilgers" <***@pcagenten.de> schrieb im Newsbeitrag news:%***@TK2MSFTNGP12.phx.gbl...
und wie geht das Jagged Array zu sortieren? Wenn ich
For i = 0 To Me.Controls.Count - 1
c = Me.Controls(i)
cName = c.GetType.ToString
arrName(i) = Mid(cName, InStrRev(cName, ".") + 1)
arrEigenschaften(i, 0) = c.Location.X
arrEigenschaften(i, 1) = c.Location.Y
arrEigenschaften(i, 2) = c.Text
arrEigenschaften(i, 3) = c.Name
arrEigenschaften(i, 4) = c.Tag
arrElemente(0) = arrName
arrElemente(1) = arrEigenschaften
Next i
arrElemente.Sort(arrElemente(0))
ausführe, wird immer nur die erste Spalte sortiert.
Post by Peter Fleischer
Post by M. Hilgers
Wie kann ich denn nun aus unten angefügtem Code ein Jagged Array
erstellen und sortieren? Habe dazu schon in mehreren Foren gesucht,
aber leider nichts passendes gefunden. Das Problem wird immer nur mit
c# gelöst, jedoch nicht mit vb.net, das ich einsetze.
Schau mal in der Hilfe unter "Arrays of Arrays".
Du erhöhst Deine Chance, dass Deine Frage überhaupt gelesen und
qualifiziert beantwortet wird, wenn Du Deinen Realnamen im Absender
einstellst (Vor- und Zuname).
Peter
Marco Hilgers
2005-06-14 12:11:22 UTC
Permalink
na das Problem ist, ich habe mehrere Controls mit den dazugehörigen
Eigenschaften. Diese fasse ich in einem Array zusammen, so dass ich sie
anschließend sortieren kann. Die Sortierung soll nach dem Controltyp
geschehen, um gleiche Controls zusammenfassen zuu können. Wenn ich nun nur
die erste Spalte des Arrays sortiere, werden die Eigenschaften der zweiten
Spalte nicht mit umsortiert und es entsteht Datenschrott.
Post by Peter Fleischer
Marco,
so richtig verstanden habe ich nicht, was du willst. Wenn du die in der
Array-Klasse integrierte Sort-Methode nutzt, dann wird immer einspaltig
sortiert. Anders sehe ich auch keinen Sinn. Wenn du es anders haben
willst, dann bau deinen eigenen Comparer, den du in einem Array mit
eigenen Objekten nutzt.
Peter
und wie geht das Jagged Array zu sortieren? Wenn ich
For i = 0 To Me.Controls.Count - 1
c = Me.Controls(i)
cName = c.GetType.ToString
arrName(i) = Mid(cName, InStrRev(cName, ".") + 1)
arrEigenschaften(i, 0) = c.Location.X
arrEigenschaften(i, 1) = c.Location.Y
arrEigenschaften(i, 2) = c.Text
arrEigenschaften(i, 3) = c.Name
arrEigenschaften(i, 4) = c.Tag
arrElemente(0) = arrName
arrElemente(1) = arrEigenschaften
Next i
arrElemente.Sort(arrElemente(0))
ausführe, wird immer nur die erste Spalte sortiert.
Post by Peter Fleischer
Post by M. Hilgers
Wie kann ich denn nun aus unten angefügtem Code ein Jagged Array
erstellen und sortieren? Habe dazu schon in mehreren Foren gesucht,
aber leider nichts passendes gefunden. Das Problem wird immer nur mit
c# gelöst, jedoch nicht mit vb.net, das ich einsetze.
Schau mal in der Hilfe unter "Arrays of Arrays".
Du erhöhst Deine Chance, dass Deine Frage überhaupt gelesen und
qualifiziert beantwortet wird, wenn Du Deinen Realnamen im Absender
einstellst (Vor- und Zuname).
Peter
Peter Fleischer
2005-06-14 12:32:30 UTC
Permalink
Post by Marco Hilgers
na das Problem ist, ich habe mehrere Controls mit den dazugehörigen
Eigenschaften. Diese fasse ich in einem Array zusammen, so dass ich
sie anschließend sortieren kann. Die Sortierung soll nach dem
Controltyp geschehen, um gleiche Controls zusammenfassen zuu können.
Wenn ich nun nur die erste Spalte des Arrays sortiere, werden die
Eigenschaften der zweiten Spalte nicht mit umsortiert und es entsteht
Datenschrott.
Marco,
so etwas kann man mit einem eindimensionalen Array von Objekten, die
IComparer implementieren realisieren. Im IComparer kann man dann auf die
einzelnen Objektbestandteile zugreifen, z.B. zuerst auf den Controltyp und
dann vielleicht auch auf Position, Größe usw.

Peter

Loading...