German zweidimensionales Array dynamisch dimensionieren?

Zerberus

Member
Licensed User
Longtime User
Hallo,

kann man inzwischen ein zweidimensionales Array, von dem man nicht weiß, wieviele Werte es einmal aufnehmen soll, dynamisch dimensionieren?

Dim meinArray(10,10) As String scheitert ab dem 11. Eintrag. meinArray(999,999) wird (wahrscheinlich?) (Speicher)Platz fressen, auch wenn nur drei Werte enthalten sind. Außerdem gibt meinArray.Length dann nicht die Anzahl der tatsächlichen Einträge aus.

Grüße

Zerberus
 

klaus

Expert
Licensed User
Longtime User
kann man inzwischen ein zweidimensionales Array, von dem man nicht weiß, wieviele Werte es einmal aufnehmen soll, dynamisch dimensionieren?
Ja.

Du kannst Dim meinArray(10,10) As String in Process_Globals oder Globals deklarieren.
Und irgendwo anders sobald Du die zwei Dimensionen kennst mit Dim meinArray(XSize, YSize) As String neu deklarieren.
Ein neues deklarieren löscht aber vorhergehende Werte !
 

Zerberus

Member
Licensed User
Longtime User
Danke, aber das ist leider nicht das, was ich suche...

Um meinem Player Playlisten zu spendieren, will ich dem Array "in laufendem Betrieb" Datensätze hinzufügen, löschen, verschieben usw. Da wäre löschen der vorhergehenden Werte kontraproduktiv ;)

Ich hoffte, daß sich das Array dynamisch der Eintrags-Anzahl anpaßt, ähnlich der guten alten Einkaufsbeutel :D
 

klaus

Expert
Licensed User
Longtime User
Ja, Du hast eine Antwort auf Deine Frage bekommen.

Jetzt sprichst Du von einem anderen Problem.
Was beinhaltet das Array oder ein DatenSatz ?

Um den Inhalt dynamisch zu verändern solltest Du dir mal das List Objekt anschauen.
Da kann man Daten
anfügen: MyList.Add(Data)
einfügen: MyList.InsertAt(Data)
löschen: MyList.RemoveAt(Data)

Die Länge der List wird automatisch angepasst.
 

Zerberus

Member
Licensed User
Longtime User
Aber List ist nur eindimensional, oder irre ich mich? Ich benötige zweidimensional.
 

pjo12345

Active Member
Licensed User
Longtime User
Ich glaube mit einer Datenbank bekommst du das am besten hin.
 

klaus

Expert
Licensed User
Longtime User
Ich frage noch mal, was ist ein DatenSatz?
In Lists kann man Objects einfügen.
Du könntest auch eine Array von Lists erstellen.
Aber ohne zu wissen was Du genau machen willst ist es schwer ganz konkrete Antworten zu geben.
Wie pjo12345 angedeutet kann eine Datenbank auch eine Lösung sein.
 

Zerberus

Member
Licensed User
Longtime User
Hallo Klaus,

ich möchte nach Deinen Hinweisen mit Objects in Lists arbeiten. Wenn ich allerdings diese List speichere und anschließend lade, bekomme ich eine Fehlermeldung "Field...not found". Ein Beispielprogramm habe ich angehängt.

Mit "anzeigen ohne..." zeigt das Log das gewünschte Ergebnis. Wie beschrieben kommt aber nach "speichern" und "laden" der Fehler. Die List vor dem Laden zu Clearen oder zu Initialisieren hat auch nicht geholfen.

Was habe ich übersehen?

Grüße

Zerberus

EDIT: Offenbar ändert sich die Größe der Liste (list.size) während des Speicherns/Ladens. Hat das eventuell mit dem CRLF zu tun? Aber wo steckt das in meiner Liste bzw. wie vermeide ich es? Ich habe mir die gespeicherte Datei mit Hex-Editor angesehen, finde aber keinen Code 13 10...
 

Attachments

  • objects-test.zip
    7.9 KB · Views: 197
Last edited:

klaus

Expert
Licensed User
Longtime User
File.WriteList und File.ReadList funktioniert nicht mit Type variablen.
Du musst RandomAccessFile benutzen.
Beiliegend eine geänderte Version deines Testprogramms.
 

Attachments

  • objects-test_Neu.zip
    7.8 KB · Views: 214

Zerberus

Member
Licensed User
Longtime User
Vielen Dank Klaus,

Du bist mal wieder mein Retter!

Gruß

Zerberus
 
Top