| |
VB.NET - Ein- und UmsteigerArrays mit 2 Spalten | | | Autor: Snecx | Datum: 13.03.10 02:24 |
| Hallo
Bin total verwirrt mit den Arrays. Bitte helft mir.
Ich möchte ein Array von 2 Spalten mit einer unterschiedlichen Anzahl von Zeilen füllen.
Dieses Array soll aus einer Funktion zurückgegeben werden.
Ich bekomme das absolut nicht hin.
ZB die funktion soll heissen Tabelle. Ihr Rückgabewert ist eben dieses Array.
In der Funktion möchte ich das Array füllen.
Wie definiere ich die Funktion und wie kann ich Werte hineinschreiben und das Array dynamisch in Abhängigkeit der Zeilenanzahl erweitern.
Ich hatte das so probiert.
DIM zeile(0,1) as string
zeile(0,0) = "test"
zeile(0,1) = "test2"
REDIM PRESERVE zeile(1,1)
zeile(1,0) = "test"
zeile(1,1) = "test2" Das klappt auch. In dem Array zeile habe ich jetzt meine Werte.
Aber wie geben ich das jetzt an die Funktion weiter
PRIVATE FUNCTION Tabell as STRING() <---- geht nicht
PRIVATE FUNCTION Tabell as STRING()() <---- geht nicht Wie muss ich das machen?
Danke | |
Re: Arrays mit 2 Spalten | | | Autor: Manfred X | Datum: 13.03.10 04:15 |
| Hallo!
1. Mit Redim Preserve kann nur die letzte Dimension eines
bereits dimensionierten, mehrdimensionalen Arrays geändert
werden.
2. Mehrdimensionale Arrays werden mit Kommas definiert und übergeben.
Die Zahl der Kommas in der Deklaration +1 gibt die Zahl der
Arraydimensionen an.
Dim zeile(,) As String
ReDim zeile(1, 1)
zeile(1, 1) = "test"
ReDim Preserve zeile(2, 1) '--> ArrayTypemismatchexception
ReDim Preserve zeile(1, 2) 'Änderung der letzten Dimension ist zulässig
Call TakeArray(zeile) 'Routinenaufruf
Zeile = GetArray 'Funktionsaufruf
'Routine mit 2D-Array als Parameter
Public Sub TakeArray(ByVal arr(,) As String)
End Sub
'Funktion mit Rückgabe eines 2D-Array
Public Function Getarray() As String(,)
Dim x(0, 0) As String
Return x
End Function
Beitrag wurde zuletzt am 13.03.10 um 04:22:45 editiert. | |
Re: Arrays mit 2 Spalten | | | Autor: Snecx | Datum: 13.03.10 12:26 |
| Ok. Vielen Dank. Jetz habe ich es.
Liegt wohl daran wie stur ich denke.
Fuer mich ist der Index(0,0) erste Zeile erste Spalte.
Index(1,0) ist zweite Zeile erste Spalte da ich nur die letzte Dimension ändern kann wenn
ich die Inhalte des arrays behalten will.
Aber hier gibt der erste Index die Spalte an.
Jetzt klappt es. Danke. | |
Re: Arrays mit 2 Spalten | | | Autor: Maas | Datum: 13.03.10 12:42 |
| Sobald es darum geht ein Array dynamisch zu handeln, hat das Array imho eigentlich ausgesorgt.
Ich würde für solche Fälle eine List(Of T) benutzen. Die lässt sich erheblich leichter handeln und ist auch noch performanter bei Veränderung.
Um dabei nicht auch noch den Überblick zu verlieren (wie es dir wahrscheinlich passiert ist), würde ich noch eine Structure oder Klasse für die Datenaufteilung erstellen.
Dim lst As New List(Of MyDataStruct)
'Hinzufügen
lst.Add(New MyDataStruct("test1A", "test1B"))
lst.Add(New MyDataStruct("test2A", "test2B"))
'Abrufen
Dim feld00 As String = lst(0).FeldA
'Entfernen
lst.RemoveAt(0) Public Structure MyDataStruct
Public FeldA As String
Public FeldB As String
Public Sub New(ByVal a As String, ByVal b As String)
Me.FeldA = a
Me.FeldB = b
End Sub
End Structure Mal ganz ehrlich: ReDim ist Steinzeit.
Maas | |
Re: Arrays mit 2 Spalten | | | Autor: Manfred X | Datum: 13.03.10 13:25 |
| Wenn man auf Daten mehrdimensional indizierten Zugriff benötigt,
sind Arrays nach wie vor die beste (vor allem: effizienteste)
Methode.
REDIM PRESERVE muss man sparsam einsetzen und möglichst durch
geeignete Vorab-Dimensionierung des Array vermeiden - weil es
(meist) eine Neuorganisation des Speichers erfordert.
Wenn man es mit einer zweidimensionalen Zeilen-/Spalten-
Anordnung der Daten zu tun hat, kann man vorteilhaft auch
eine System.Data.Datatable einsetzen.
(Die Datatable bietet auch indizierten Zugriff auf die
Zellen und ermöglicht die einfache Daten-Editierung
durch die Bindung an ein Datagridview-Control.)
Beitrag wurde zuletzt am 13.03.10 um 13:33:31 editiert. | |
| Sie sind nicht angemeldet! Um auf diesen Beitrag zu antworten oder neue Beiträge schreiben zu können, müssen Sie sich zunächst anmelden.
Einloggen | Neu registrieren |
|
|
TOP! Unser Nr. 1
Neu! sevDataGrid 3.0
Mehrspaltige Listen, mit oder ohne DB-Anbindung. Autom. Sortierung, Editieren von Spalteninhalten oder das interaktive Hinzufügen von Datenzeilen sind ebenso möglich wie das Erstellen eines Web-Reports. Weitere InfosTipp des Monats TOP Entwickler-Paket
TOP-Preis!!
Mit der Developer CD erhalten Sie insgesamt 24 Entwickler- komponenten und Windows-DLLs. Die Einzelkomponenten haben einen Gesamtwert von 1605.50 EUR...
Jetzt nur 599,00 EURWeitere Infos
|
|
|
Copyright ©2000-2024 vb@rchiv Dieter Otter Alle Rechte vorbehalten.
Microsoft, Windows und Visual Basic sind entweder eingetragene Marken oder Marken der Microsoft Corporation in den USA und/oder anderen Ländern. Weitere auf dieser Homepage aufgeführten Produkt- und Firmennamen können geschützte Marken ihrer jeweiligen Inhaber sein.
Diese Seiten wurden optimiert für eine Bildschirmauflösung von mind. 1280x1024 Pixel
|
|