Das Notes Forum

Domino 9 und frühere Versionen => ND8: Entwicklung => Thema gestartet von: Gutierrez am 24.11.15 - 09:15:42

Titel: Objekt aus Array löschen
Beitrag von: Gutierrez am 24.11.15 - 09:15:42
Hallo liebe Notes-Liebenden ;-)


Kurze Frage:

Ich habe ein Array mit Objekten:

Dim Aepfel() As Apfel

Redim Aepfel(0)
Set Aepfel(0) = New Apfel

Redim Preserve Aepfel(1)
Set Aepfel(1) = New Apfel

Redim Preserve Aepfel(2)
Set Aepfel(2) = New Apfel

Redim Preserve Aepfel(3)
Set Aepfel(3) = New Apfel


Jetzt möchte ich einen Apfel mit Index = 1 löschen, Apfel Index = 2 soll aber auf die Position von dem gelöschten Apfel nach vorne rücken, sowie alle folgenden Apfel-Objekte. Zum Schluß wird das Array um ein Element verkleinert.

Wie würdet ihr das machen?



Titel: Re: Objekt aus Array löschen
Beitrag von: Peter Klett am 24.11.15 - 09:36:26
Im Prinzip so:

Code
deletenr = 1
For i = deletenr To Ubound (Aepfel) - 1
   Set Aepfel (i) = Aepfel (i + 1)
Next i
Redim Preserve Aepfel (Ubound (Aepfel) - 1)
Titel: Re: Objekt aus Array löschen
Beitrag von: Tode am 24.11.15 - 10:14:21
Brauchst Du denn wirklich den direkten Zugriff über die Indizes? Wenn nicht, dann würde ich über eine Liste arbeiten, die ist in diesem Fall viel Flexibler...

Code
Class Apfel
      Public strIdentifier as String
      Sub New()
        Me.strIdentifier = "Irgendeineindeutigeridentifier"
      End Sub
    End Class

Dim tmpApfel as Apfel
Dim lAepfel List as Apfel

Set tmpApfel = New Apfel()
Set lAepfel( tmpApfel.strIdentifier ) = tmpApfel

Ein Element löschen geht dann einfach über
Code
Erase lAepfel( irgendeinIdentifier )


Titel: Re: Objekt aus Array löschen
Beitrag von: Gutierrez am 24.11.15 - 10:18:36
OK, im Prinzip habe ich es auch so gelöst wie Peter, nur mit paar Zeilen mehr.

Die Idee mit der Liste (ich mag Listen!) ist mir noch nicht gekommen, aber interessant!

Vielen Dank euch beiden!