Also:
Free ist eine Prozedur, die prüft, ob die Instanz bereits nil ist (also gar nicht oder nicht mehr existiert). Wenn nicht, wird der Destruktor aufgerufen. Der sollte grundsätzlich Destroy heißen. (Auch wenn man ihn theoretisch auch anders nennen kann.

)
Dann schauen wir doch mal:
HenryHux hat folgendes geschrieben : |
Hey, ich habe bis jetzt immer die Exception invalid Pointer bekommen, wenn ich den constructor so aufgerufen habe.
Delphi-Quelltext 1:
| destructor TReactions.free; | |
Du deklarierst hier einen Destruktor, der genauso heißt wie die Prozedur Free. Wenn du jetzt das geerbte Free aufrufst, ruft das wiederum den Destruktor auf. Nur ist das bei dir dein Free. Das wird also selbst wieder aufgerufen.
Deshalb:
Erstens heißt ein Destruktor
immer Destroy (und der Konstruktor Create).
Zweitens sollte dieser nie direkt aufgerufen werden, sondern stattdessen Free (steht auch in der Hilfe).
Und drittens solltest du Free nicht überschreiben, es sei denn du weißt warum du das willst.