Das Notes Forum

Domino 9 und frühere Versionen => ND6: Entwicklung => Thema gestartet von: MadMetzger am 23.05.07 - 19:52:50

Titel: Element aus List entfernen
Beitrag von: MadMetzger am 23.05.07 - 19:52:50
Hallo,

ich arbeite gerade viel mit List-Variablen und brauche jetzt das Entfernen eines Elements aus einer Liste. Arbeite ich mit Erase List(ListTag) so wird mir auch die Referenz zerschossen. Aber wie bekomme ich einfach nur ein Element aus einer Lister heraus, ohne diese zu verlieren.
Titel: Re: Element aus List entfernen
Beitrag von: koehlerbv am 23.05.07 - 20:01:10
Erase List (ListTag) tut aber gerade genau das, was Du willst ... Kann da noch ein anderer Fehler vorliegen? Ich kann über diese Funktionalität nicht klagen.

Siehe auch das Hilfethema "Working with lists", dort nach "Erase listname" suchen.

Bernhard
Titel: Re: Element aus List entfernen
Beitrag von: MadMetzger am 23.05.07 - 20:16:43
Natürlich tut es das, was es soll und entfernt den Eintrag aus der Liste. Nur ist das Problem, dass mir damit auch das in dem Listeneintrag referenzierte Objekt nicht mehr im Zugriff.
Beispiel des Aufrufs:
public sub someMethod(o as Object)
forall e in o.members
  o.removeE(e)
  e.someMethod()
end forall
end sub

in Object:
public members list as AnotherObject

public sub removeE(e as AnotherObject)
  erase me.members(e.getId())
end sub

Dort ist nach dem Aufruf von o.removeE(e) ist e nicht mehr benutzbar und es kommt folgende Fehlermeldung:
"List Item does not exist" (Genauso lautet die Meldung)
Titel: Re: Element aus List entfernen
Beitrag von: koehlerbv am 23.05.07 - 20:33:55
Mir fehlt jetzt hier natürlich der Kontext, aber ich befürchte, Du hast da ein ganz anderes Problem (innerhalb Deiner Klasse, wo sich wohl Objekte gegenseitig den Boden wegziehen).

Bernhard (Im Hotel auf der Schwäbischen Alb und jetzt den WLAN-Hotspot verlassend)
Titel: Re: Element aus List entfernen
Beitrag von: MadMetzger am 23.05.07 - 20:43:09
Hm... Werde da nochmal in Ruhe drüber nachdenken. Kann ich mir zwar gerade nicht so genau vorstellen, warum ich hier Objekten die den Boden wegreiße. Aber vielleicht sehe ich das morgen mit anderen Augen.
Titel: Re: Element aus List entfernen
Beitrag von: MadMetzger am 24.05.07 - 09:30:18
Okay... Ich habe jetzt erstmal getestet, ob das auch in einfacheren Scripten der Fall ist, dass die Referenz dann flöten geht. Bei folgendem Code ist das nicht so:

Code
dim liste list as MyObject
dim obj as MyObject

set liste("1") = new MyObject()
set liste("2") = new MyObject()
set liste("3") = new MyObject()

set obj = liste("1")

erase liste("1")


Hier ist dann auch nach Aufruf von erase die Referenz von obj vorhanden und auch gesetzt.
Titel: Re: Element aus List entfernen
Beitrag von: MadMetzger am 24.05.07 - 10:43:08
Es ist wirklich so, dass ich durch das Entfernen der Liste und den Einträgen mit meinem Code den Boden unter den Füßen wegziehe durch Iteration über die Liste und gleichzeitiges Entfernen. Zieht man das auseinander, funktioniert es einwandfrei.