Hallo,
ich bin in den Keller gegangen und habe mein
TP 6.0 heraufgeholt, um eine Stringliste (als verkettete Liste) zu implementieren - hauptsächlich aus Spaß.
Nun stehe ich vor folgendem Problem:
Meine
Object-Definition:
Code:
type
TStringsNode = ^_TStringsNode;
_TStringsNode = Object
Content : String;
Predecessor, Successor : TStringsNode;
constructor Init;
destructor Done;
function Next : Boolean;
function Previous : Boolean;
end;
Hier meine Implementierung der Methode
Previous:
Code:
function _TStringsNode.Previous : Boolean;
begin
if Self.Predecessor <> nil then begin
Self := Self.Predecessor^;
Previous := true;
end
else Previous := false;
end;
Die problematische Zeile ist
Self := Self.Predecessor^; .
Ich glaube begriffen zu haben, dass damit der
Inhalt der Variable, wo
Predecessor hinzeigt, zum neuen Inhalt von
Self wird.
Self ist also ein dereferenzierter Zeiger (?), also ein Bezeichner für die
Variable des aktuellen Objekts,
nicht ein Bezeichner für einen
Zeiger auf das aktuelle Objekt, gel?
Die Frage ist: wie kann ich die Adresse von Self ändern?
Bzw: kann ich überhaupt in einer Methode eines Objekts die Adresse des Objekts ändern?
Vielen lieben Dank für eventuelle Hilfe auf diesem krassen Gebiet!
Caps