Zitat von
Hansa:
was soll das
inherited create;
?
Und das inherited mit dem Item ? Den TObject-Constructor gibt es zwar, der ist aber leer. Wenn dieser leere Constructor aufgerufen werden soll, dann wenigstens nur mit
inherited;
Das ist doch egal. Und um genau zu sein geht es z.B. bei variablen Parametern in der überschriebenen Methode gar nicht nur mit inherited;! Deshalb ist das schon völlig richtig, schließlich spricht man damit ja explizit diese Methode in der Elternklasse an.
Zitat von
Hansa:
P.S.: sehe, da steht ja sogar
constructor TTabu.Create();
Wozu die () ? Befürchte, dass Delphi sogar dadurch aufs Glatteis gejagt wird.
Auch das ist korrekt. Ganz alte Delphiversionen kannten das wohl noch nicht, aber zumindest ab Delphi 6 ist diese Schreibweise bei Methoden ohne Parameter vollkommen normal. Auch ich benutze das oft, weil man damit deutlich Methoden von Eigenschaften und Variablen unterscheiden kann, unabhängig vom Namen.
Was das inherited in GetItems soll, ist mir allerdings nicht klar, denn schließlich gibt es ja kein Items in der neuen Klasse, so dass das ohnehin klar ist, was gemeint ist.
Ich sehe in den geposteten Schnipseln aber erstmal keinen echten Fehler.
Die beschriebenen Effekte deuten jedenfalls auf ein Speicherproblem. Überschriebener Speicher z.B., aber das liegt nicht an dem geposteten Code.
Dass es Fehler gibt, wenn du die erstellten Objekte nach dem Hinzufügen freigibst, ist klar, denn dann sind die ja in der Liste auch kaputt.
Vielleicht hilft es, wenn du versuchst den entsprechenden Code isoliert zu testen bzw. zu kürzen. Wenn das nicht mehr viel Code wäre, in dem dann immer noch der Fehler auftritt, könntest du den dann komplett posten.