![]() |
AW: Property -> Getter und Setter mit Parametern
Zitat:
|
AW: Property -> Getter und Setter mit Parametern
Wenn man weniger Tipparbeit haben will, würde ich mal die Programmiersprache wechseln. :stupid:
Diese Klimmzüge, um Getter und Setter über indexe anzusprechen, ist doch ziemlich unsauber und irgendwie von hinten durch die Brust ins Auge. Denn was habe ich im Getter und Setter vermutlich? Ein Case, würde ich mal annehmen. Oder halten wir die Daten etwa in einem Array? |
AW: Property -> Getter und Setter mit Parametern
Zitat:
|
AW: Property -> Getter und Setter mit Parametern
Delphi-Quellcode:
Der Property EinStringWert ist ein Array-Property.
TCustomSpeicherobjekt = class(TObject)
private function GetEinStringWert(aIndex: string): string; procedure SetEinStringWert(aIndex: string; const Value: string); public property EinStringWert[aIndex:string]:string read GetEinStringWert write SetEinStringWert;default; end; Pro Klasse kann man genau ein Array-Property zum Default-Indexer erklären (Schlüsselwort default).
Delphi-Quellcode:
Das spart auch Tipparbeit.
var
x : TCustomSpeicherobjekt; begin x := TCustomSpeicherobjekt.Create; x['Host'] := 'www.delphipraxis.net'; |
AW: Property -> Getter und Setter mit Parametern
Zitat:
Und selbst wenn es nichts mit Persistenz zu tun hat, ist es unsauber, denn die Tatsache, das der Wert 'FooBar' an Stelle 3 im Array stehen soll, ist somit an mehreren Stellen definiert. Ausnahme: Das Array ist ein Ersatz für private Felder. D.h. im Getter/Setter steht nur der Zugriff auf das Array. Dann...Nun ja. Spart man keine Tipparbeit, sondern hat einen Mapper geschrieben. Die Motivation des TE ist TIPPARBEIT SPAREN und nicht, Konstrukte für Index-Properties zu finden, die sinnvoll sind. Zitat:
Delphi-Quellcode:
Das Beispiel stammt aus meinem uralten Code. Kapselung dient ja nicht dazu, schlechten Code zu verbergen. Sollte es zumindest nicht.
Procedure TMyClass.SetValue (Value : TSomeType;Index : Integer);
begin case Index of 0 : StringValues[0] := Value.AsString; 1 : IntegerValues[0] := Value.AsInteger; ... end; Zitat:
Delphi ist nun mal eine Programmiersprache, die von Tastaturherstellern gesponsort wird... |
AW: Property -> Getter und Setter mit Parametern
Zitat:
Sherlock |
AW: Property -> Getter und Setter mit Parametern
Nochmal danke für die Beiträge. Letztendlich gibt es nicht das, was ich mir vorgestellt habe. War ja auch nur ein Gedankengang.
Wichtig ist für mich, daß die Properties bestehen bleiben. Deshalb fällt der Vorschlag von z.B. sx2008 aus. Ausserdem muss der Code lesbar bleiben. Deshalb wäre ein Sprachfeature in der Form von
Delphi-Quellcode:
eine tolle Sache. Damit wäre Tipparbeit erheblich reduziert und der Code ist besonders gut lesbar.
// Entweder so
property WertA:string read EinStringWert['WertA'] write EinStringWert['WertA']; // oder so property WertB:string read GetEinStringWert('WertB') write SetEinStringWert('WertB'); Der Vorschlag von "Uwe Raabe" wäre der besste. Allerdings auch nur, wenn keine Sonderzeichen benötigt werden. Folgendes wäre damit nicht möglich.
Delphi-Quellcode:
property WertA:string read EinStringWert['Wert-A-MitSonderzeichen'] write EinStringWert['Wert-A-MitSonderzeichen'];
|
Alle Zeitangaben in WEZ +1. Es ist jetzt 23:39 Uhr. |
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz