Forum: Algorithmen, Datenstrukturen und Klassendesign
by Thom,
23. Aug 2012
@s.h.a.r.k:
Die Performance habe ich noch nicht verglichen. Ob es zwischen dem zusätzlichen Code, der von Compiler für Variant erzeugt wird und dem, der durch eigene Konvertierungen entsteht, signifikante Unterschiede gibt, müßte man einmal testen.
Aber wie schon geschrieben: Variant ist kein Wundermittel und hat seine Grenzen - wie jede andere Lösung auch. Generics sind ebenfalls kein...
Forum: Algorithmen, Datenstrukturen und Klassendesign
by Thom,
23. Aug 2012
Ich verstehe Dein Problem mit Variant nicht. Dafür gibt es, wie schon geschrieben, entsprechende Tests. Da "kracht" gar nichts.
Außerdem wird ja keiner gezwungen, den Typ Variant zu verwenden. Er hat - wie alle anderen Herangehensweisen auch - Vor- und Nachteile.
Nachtrag
Da Du Deinen Beitrag inzwischen geändert hast, muß ich auch noch etwas ergänzen:
Da ganze läuft wieder auf "meine...
Forum: Algorithmen, Datenstrukturen und Klassendesign
by Thom,
23. Aug 2012
@-=ZGD=-:
Gut, dann müßtest Du natürlich vorher den Inhalt des Variant-Wertes testen:
if VarIsType(Items,varInteger)
then IntegerWert:=Items
else IntegerWert:=IntegerDefault;
Willst Du diesen Test innerhalb Deines Objektes unterbringen, ist die Verwendung von Variant ungünstig und ich würde an Deiner Stelle auch Records nehmen.
Dafür gibt es Tests... Und es gibt Sprachen,...
Forum: Algorithmen, Datenstrukturen und Klassendesign
by Thom,
23. Aug 2012
Wie wäre es mit dem Typ Variant als Ergebnis? Dann übernimmt Delphi die komplette Typ-Konvertierung (dort, wo es geht) und man spart sich viel Schreibarbeit:
type
TMyClass = class
private
procedure SetItem(const Name: String; const Value: Variant);
function GetItem(const Name: String): Variant;
public
property Items: Variant read GetItem write SetItem;
end;