Autor Thema: Element aus List entfernen  (Gelesen 1400 mal)

Offline MadMetzger

  • Gold Platin u.s.w. member:)
  • *****
  • Beiträge: 1.052
  • Geschlecht: Männlich
  • f.k.a. Alexis Pyromanis
Element aus List entfernen
« 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.
« Letzte Änderung: 23.05.07 - 19:55:48 von MadMetzger »

Offline koehlerbv

  • Moderator
  • Gold Platin u.s.w. member:)
  • *****
  • Beiträge: 20.460
  • Geschlecht: Männlich
Re: Element aus List entfernen
« Antwort #1 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

Offline MadMetzger

  • Gold Platin u.s.w. member:)
  • *****
  • Beiträge: 1.052
  • Geschlecht: Männlich
  • f.k.a. Alexis Pyromanis
Re: Element aus List entfernen
« Antwort #2 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)
« Letzte Änderung: 23.05.07 - 20:27:34 von MadMetzger »

Offline koehlerbv

  • Moderator
  • Gold Platin u.s.w. member:)
  • *****
  • Beiträge: 20.460
  • Geschlecht: Männlich
Re: Element aus List entfernen
« Antwort #3 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)

Offline MadMetzger

  • Gold Platin u.s.w. member:)
  • *****
  • Beiträge: 1.052
  • Geschlecht: Männlich
  • f.k.a. Alexis Pyromanis
Re: Element aus List entfernen
« Antwort #4 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.

Offline MadMetzger

  • Gold Platin u.s.w. member:)
  • *****
  • Beiträge: 1.052
  • Geschlecht: Männlich
  • f.k.a. Alexis Pyromanis
Re: Element aus List entfernen
« Antwort #5 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.

Offline MadMetzger

  • Gold Platin u.s.w. member:)
  • *****
  • Beiträge: 1.052
  • Geschlecht: Männlich
  • f.k.a. Alexis Pyromanis
Re: Element aus List entfernen
« Antwort #6 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.

 

Impressum Atnotes.de  -  Powered by Syslords Solutions  -  Datenschutz