Forum: Algorithmen, Datenstrukturen und Klassendesign
Delphi
by Sir Rufo,
3. Feb 2016
@Benmik
Mach dir da nichts draus. Der Nick versteckt die implementierenden Klassen auch gerne mal im implementation Teil und erzeugt Instanzen im initialization Abschnitt.
Da kenne ich wiederum einige, die ihm dafür die Büßer-Kutte umhängen würden. :stupid:
(Ja, ich auch)
Forum: Algorithmen, Datenstrukturen und Klassendesign
Delphi
by Sir Rufo,
3. Feb 2016
Mit einem Interface legt man fest, was die Klasse implementieren muss.
Basis für jedes Interface ist dabei IInterface und das legt 3 Methoden fest, die also immer wie auch immer vorhanden sein müssen.
Wie diese Implementierung und das Verhalten aussieht ... bleibt dem Klassen-Designer überlassen.
TInterfacedObject hat diese 3 Methoden schon implementiert und ich kann von da meine Klasse...
Forum: Algorithmen, Datenstrukturen und Klassendesign
Delphi
by Sir Rufo,
3. Feb 2016
Wenn du da so eine schöne Klasse hast, die sich in einen Stream schreiben kann, dann könnte man eines schönen Tages auf die Idee kommen, diese in einer Datenbank in einem Blob-Feld abzulegen.
Habe ich damals beim designen der Klasse nachgedacht und das Interface IStreamPersist implementiert, dann sieht mein Code so aus
MyDataSet.Append;
MyDataSet.FieldByName( 'BlobData' ).Assign(...
Forum: Algorithmen, Datenstrukturen und Klassendesign
Delphi
by Sir Rufo,
3. Feb 2016
Das ist leider total falsch.
Die Referenz-Zählung ist keine Erfindung von Delphi
Eine Instanz kann sich automatisch freigeben, wenn der Referenz-Zähler auf 0 geht. Ob das passiert hängt von der Implementierung ab ... und die hat man ja selber in der Hand.
Forum: Algorithmen, Datenstrukturen und Klassendesign
Delphi
by Sir Rufo,
18. Jan 2016
Nur so als Tip:
Wenn man Klassen mit Stream-Funktionen ausstattet, dann sollte man auch immer das Interface IStreamPersist an die Klasse heften.
Macht auf jeden Fall das Leben leichter ;)