Einzelnen Beitrag anzeigen

-=ZGD=-

Registriert seit: 25. Apr 2006
Ort: Bad Aibling
105 Beiträge
 
Delphi 10.1 Berlin Professional
 
#18

AW: Property via AsString;AsInteger;AsBoolean;.. laden

  Alt 23. Aug 2012, 13:03
Aus welchem Grund will ich einen Boolean-Wert auf -1 abfragen? Was hat das denn mit Flexibilität zu tun? Es ist entweder ein Boolen oder ein Integer oder ein string. Gut, der einzige Vorteil, den ich gerade sehe ist, dass ich dem Variant auch eien Null-Wert geben kann, das lasse ich mir eingehen. Dafür gibts aber einen generischen Nullable-Typ, entweder einen selbst geschriebenen oder gleich der vom Spring-Framework.

Finde es jedenfalls etwas seltsam bei jedem Aufruf wissen zu müssen, welchen Datentyp, denn gerade vorliegen soll, in der Hoffnung, dass dann auch das passende im Variant drin steht. Klar, wenn das System nicht groß ist und nicht viele Einstellungen hat, dann ists noch überschaubar. Aber ständig die Doku neben dran liegen zu haben und nachschauen zu müssen, welche Variable von welchem Typen ist... Und das wird dir, wenn du die Software wartest, irgendwann mal passieren, da du nicht jeden Tag den Code in den Fingern hast.

Wo liegt das Problem beim Setter? Füge dem Record ein SetValue() hinzu und gut is.
Du frägst keinen Boolean auf -1 ab, aber das wäre in dem Falle ein TRUE und ist selbiges Feld als Integer -1 kannst du genauso damit arbeiten und zum Beispiel Werte einfach negieren, wenn du es *-1 nimmst.
Jetzt nicht den Kopf zerbrechen, warum und woher..

Pass auf:

Code:
KEY | VALUE
dbhost | localhost
dbport | 3306
dbuser | root
...
Das wäre jetzt ein Auszug aus der Config-Tabelle.

Bisher wurde alles als String ausgelesen.
Nun kann ich meiner Port-Komponente keinen String zuweisen. Daher die Intention
Code:
.AsInteger
So, die Doku muss der Entwickler sowieso bei sich haben, damit er weiß, welche Konfigurationfelder er eigentlich hat, da ist´s egal, dass er noch schaut und liest: Typ.INTEGER.

property Item[aKey: String]: RConfig2 read GetVariantValue write SetVariantValue; SetVariantValue ist ein Prozedur procedure SetVariantValue(aID: String; aValue: Variant); .

Ich hab auch schon versucht,
Code:
RConfig2
zu übergeben, aber ich scheitere...
Stefan Michalk
  Mit Zitat antworten Zitat