Zitat von
QuickAndDirty:
Zitat von
jbg:
Ach ja: Du hast gerade herausgefunden, warum man Interfaces mit Objektreferenzen nicht mischen soll: Die Referenzzählung spielt verrückt und die Objektreferenz oder das Interface zeigen auf ein nicht mehr vorhandenes Objekt.
Das ist nicht gerade ein motivierender Lernerfolg!
Gibt es ein Class2Interface Tool, damit ich den public Teil wenigstens nicht ständig doppelt deklarieren muss?
Ja: das Extract Interface Refactoring in der
IDE. Einfach rechte Maustaste auf der Klassendeklaration und dann aus dem Kontextmenü wählen. Man kann die zu extrahierenden Methoden dann auch einzeln deaktivieren. Die Klasse erhält dann auch in der Deklaration das Interface.
Das sieht dann bei einem Formular so aus:
Delphi-Quellcode:
type
IMainFrm = interface
procedure Button1Click(Sender: TObject);
procedure Button2Click(Sender: TObject);
procedure Button3Click(Sender: TObject);
procedure FormCreate(Sender: TObject);
end;
TMainForm = class(TForm, IMainFrm)
...
Refactorings sind für manche der einzige Grund, auf eine neuere Version zu wechseln - was man da bei grossen Projekten an Zeit spart, gleicht die längere Startzeit der
IDE locker aus