Forum: Algorithmen, Datenstrukturen und Klassendesign
Delphi
by TiGü,
16. Dez 2013
Mir ist nicht ganz klar, worauf das Testprogramm abzielt, aber im Anhang findest du eine Version ohne Speicherleck.
Man kann sich die TObjectList<T> und die Item-Klasse komplett sparen, aber ich merke du hast mein Beispiel mit dem Dictionary weiter oben auch nicht wirklich näher ausprobiert und/oder verstanden.
Ansonsten merkt man am Quelltext, dass du häufig viel zu kompliziert denkst und...
Forum: Algorithmen, Datenstrukturen und Klassendesign
Delphi
by TiGü,
13. Dez 2013
:-D
Eben das wollte ich zeigen!
Solange der Pointer nicht ungültig wird, wird ja auch beliebig in die Methoden gesprungen.
Wenn hier fröhlich Interface- und Objektreferenzen gemischt werden (sollt ihr dafür alle in der Hölle schmoren) dann geht auch folgends:
function TMyDoSomething.DoSomeThing : Integer;
begin
Result := 123;
end;
Forum: Algorithmen, Datenstrukturen und Klassendesign
Delphi
by TiGü,
12. Dez 2013
Wie oben erwähnt, ja!
Mit einem normalen Objekt hättest du ein Speicherleck!
Forum: Algorithmen, Datenstrukturen und Klassendesign
Delphi
by TiGü,
12. Dez 2013
Wer meint es besser zu wissen bzw. sein Anwendungsfall es unbedingt erfordert, muss ja nicht von TInterfacedObject ableiten, sondern kann selber die IInterface-Methoden implementieren bzw. wie schon von Günther angesprochen mit System.Generics.Defaults.TSingletonImplementation arbeiten.
Die "automatische" Referenzverwaltung von Inferface-Objekten ist in meinen Augen sehr bequem und ermöglicht...
Forum: Algorithmen, Datenstrukturen und Klassendesign
Delphi
by TiGü,
12. Dez 2013
Lesen und verstehen der Doku sind zwei Paar Schuhe!
Was unter der Überschrift "Warnung" als kryptischer 53 Wörter Satz steht, heißt nicht weiter als:
"Pass ja auf wenn du Interface- mit Objektreferenzen mischt, dass kann nämlich ganz schön in die Hose gehen wenn du mit Supports arbeitest."
Auch hier gilt: Nicht die Supports-Funktion ist schlecht oder fehlerhaft, sondern der Programmierer hat...
Forum: Algorithmen, Datenstrukturen und Klassendesign
Delphi
by TiGü,
10. Dez 2013
Das ist so nicht richtig, siehe Doku:
function Supports(const Instance: IInterface; const IID: TGUID; out Intf): Boolean;
function Supports(const Instance: TObject; const IID: TGUID; out Intf): Boolean;
function Supports(const Instance: IInterface; const IID: TGUID): Boolean;
function Supports(const Instance: TObject; const IID: TGUID): Boolean;
function Supports(const AClass: TClass; const...
Forum: Algorithmen, Datenstrukturen und Klassendesign
Delphi
by TiGü,
6. Dez 2013
Versuche mal den Code Input Helper vom CnPack. Der kann auch "mittendrin".
Hier schreibe ich bspw. in den uses nur "generic" und er bietet mir gleich die beiden passenden Units an.
Forum: Algorithmen, Datenstrukturen und Klassendesign
Delphi
by TiGü,
6. Dez 2013
Ja, gibt es schon in 2009!
Die Lösung von jaenicke mit einer generischen TList<T> ist das auf jeden Fall besser als eine TObjectList.
Für deine Zwecke wäre sogar ein generisches TDictionary besser, da du ja irgendwie auf die Objekte per Namen zugreifen willst (siehe TListData.fName).
Das ständige Rumgecaste mit unlesbaren Code (TMyInteger(TMyDoSomething(fList.fMy]).fAValue).SetValue(2);)...