![]() |
Delphi-Version: 6
ist ein custom write möglich?
Hallo,
kann man bei einer property die write (funktion?) umdefinieren? Also ich möchte ungefähr sowas haben: property Name : String read fName write trim(fName); ...also dass ich noch auf die Werte noch irgendwelche Funktionen werfen kann. Danke! |
AW: ist ein custom write möglich?
Moin... :P
Sichwort: Setter :wink: auf die Schnelle: ![]() |
AW: ist ein custom write möglich?
Suche mal nach "Getter" und "Setter".
Getter sind lesende Funktionen, die statt einem Lesen eines Propertywertes ausgeführt werden. Setter sind entsprechend schreibende Prozeduren. Du Kannst damit z.B. so etwas lösen:
Delphi-Quellcode:
procedure TPerson.setFirstNamne(Value: string);
begin fFirstName := Trim(Value); end; |
AW: ist ein custom write möglich?
Ich denke er redet davon, in einem Typennachfahr die Read-/Write-Klauseln einer Eigenschaft neu zu definieren, ohne die Eigenschaft zu überschreiben. Und das geht nicht. Du kannst die Signaturen oder Les-/Schreibbarkeit einer Eigenschaft nicht überschreiben, sondern nur deren Sichtbarkeit.
|
AW: ist ein custom write möglich?
Wozu braucht man diese properties dann noch?
|
AW: ist ein custom write möglich?
Zitat:
Eigenschaften können:
Das wars. Mehr ist da nicht möglich. Sie sind also so gesehen nur "semantischer Zucker". |
AW: ist ein custom write möglich?
Zitat:
Delphi-Quellcode:
- oder
var
Delphi-Quellcode:
-Parameter übergeben.
out
Das sieht man z.B. auch daran dass Sprachen wie Java keine Entsprechung zu Delphi-Properties haben da man wohl gemerkt hat dass man mit einer einfachen Variable oder getXXX() und setXXX()-Methoden besser fährt. |
AW: ist ein custom write möglich?
Hallo,
Zitat:
property Active: Boolean Read GetActive write SetActive;
Delphi-Quellcode:
Hier wird nicht einfach nur FActive gesetzt, sondern es werden noch einige Randbedingungen geprüft.
procedure SetActive(Wert: Boolean);
begin if FActive=Wert then begin // keine Änderung notwendig Exit; end; if Wert=False then begin InternalCloseFile; FActive:= False; Exit; end; if FFileName='' then begin // ev. Log Exception.Create('FileName not set'); end; if not FileExists(FFileName) then begin // ev. Log Exception.Create('File does not exist'); end; InternalOpenFile; FActive:= True; end; |
AW: ist ein custom write möglich?
Hallo,
und ich benutze die Properties auch sehr gern, um in die Set-Methode Breakpoints zu setzen, um die Stelle schnell zu finden, wo eine Variable(hier Property) gesetzt wird. |
AW: ist ein custom write möglich?
Delphi-Quellcode:
...sowas gehört mit dem Klammerbeutel gepudert. :stupid:
if Wert=False then
|
Alle Zeitangaben in WEZ +1. Es ist jetzt 11:07 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