*pointer auf gelöschtes Element - warum funktioniert das?
Verfasst: 09.08.2020 06:30
Hallo ihr Lieben,
Kann mir jemand erklären, warum der folgende Code funktioniert?
Ich initialisiere einen *pointer für strukturierte Elemente.
Ich erstelle 10 Elemente und nummeriere diese durch.
Ich lasse die Liste durchlaufen - am Anfang jedes Durchlaufes speichere ich die Adresse des aktuellen Elementes mit meinem Pointer. Dann lösche ich das aktuelle Element, aber am Ende des Durchlaufes ist es mir trotzdem gestattet, das soeben gelöschte Element mittels ChangeCurrentElement() und meinem *pointer wieder herzustellen.
1. Frage:
Warum funktioniert das?
2. Frage:
Ist das safe? Also wenn es mir nur darum geht, am ENDE des Durchlaufes da weiterzumachen, wo ich am Anfang war, ganz egal was in der Mitte passiert - ist das ein legitimer Trick, oder kann mir das unter bestimmten Voraussetzungen um die Ohren fliegen?
Vielen Dank!
Kann mir jemand erklären, warum der folgende Code funktioniert?
Code: Alles auswählen
Structure FOO
index.i
EndStructure
NewList foo.FOO()
Define *this.FOO
For a = 1 To 10
AddElement(foo())
foo()\index = a
Next
ForEach foo()
*this = @foo()
DeleteElement(foo())
ChangeCurrentElement(foo(),*this)
Debug foo()\index
Next
Ich erstelle 10 Elemente und nummeriere diese durch.
Ich lasse die Liste durchlaufen - am Anfang jedes Durchlaufes speichere ich die Adresse des aktuellen Elementes mit meinem Pointer. Dann lösche ich das aktuelle Element, aber am Ende des Durchlaufes ist es mir trotzdem gestattet, das soeben gelöschte Element mittels ChangeCurrentElement() und meinem *pointer wieder herzustellen.
1. Frage:
Warum funktioniert das?
2. Frage:
Ist das safe? Also wenn es mir nur darum geht, am ENDE des Durchlaufes da weiterzumachen, wo ich am Anfang war, ganz egal was in der Mitte passiert - ist das ein legitimer Trick, oder kann mir das unter bestimmten Voraussetzungen um die Ohren fliegen?
Vielen Dank!
