vb@rchiv
VB Classic
VB.NET
ADO.NET
VBA
C#
Blitzschnelles Erstellen von grafischen Diagrammen!  
 vb@rchiv Quick-Search: Suche startenErweiterte Suche starten   Impressum  | Datenschutz  | vb@rchiv CD Vol.6  | Shop Copyright ©2000-2024
 
zurück

 Sie sind aktuell nicht angemeldet.Funktionen: Einloggen  |  Neu registrieren  |  Suchen

VB.NET - Ein- und Umsteiger
Arrays 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
Themenbaum einblendenGesamtübersicht  |  Zum Thema  |  Suchen

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.
Themenbaum einblendenGesamtübersicht  |  Zum Thema  |  Suchen

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.
Themenbaum einblendenGesamtübersicht  |  Zum Thema  |  Suchen

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
Themenbaum einblendenGesamtübersicht  |  Zum Thema  |  Suchen

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.
Themenbaum einblendenGesamtübersicht  |  Zum Thema  |  Suchen

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

Funktionen:  Zum Thema  |  GesamtübersichtSuchen 

nach obenzurück
 
   

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