AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Thema durchsuchen
Ansicht
Themen-Optionen

ist ein custom write möglich?

Ein Thema von kagi3624 · begonnen am 6. Feb 2020 · letzter Beitrag vom 7. Feb 2020
Antwort Antwort
Seite 1 von 2  1 2      
kagi3624

Registriert seit: 3. Feb 2020
138 Beiträge
 
Delphi 6 Enterprise
 
#1

ist ein custom write möglich?

  Alt 6. Feb 2020, 14:10
Delphi-Version: 6
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!
  Mit Zitat antworten Zitat
Benutzerbild von haentschman
haentschman

Registriert seit: 24. Okt 2006
Ort: Seifhennersdorf / Sachsen
5.388 Beiträge
 
Delphi 12 Athens
 
#2

AW: ist ein custom write möglich?

  Alt 6. Feb 2020, 14:38
Moin...

Sichwort: Setter

auf die Schnelle: https://delphi-lernen.de/de/index.php?mid=203&vr=2
  Mit Zitat antworten Zitat
Benutzerbild von stahli
stahli

Registriert seit: 26. Nov 2003
Ort: Halle/Saale
4.343 Beiträge
 
Delphi 11 Alexandria
 
#3

AW: ist ein custom write möglich?

  Alt 6. Feb 2020, 14:44
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;
Stahli
http://www.StahliSoft.de
---
"Jetzt muss ich seh´n, dass ich kein Denkfehler mach...!?" Dittsche (2004)
  Mit Zitat antworten Zitat
Dennis07

Registriert seit: 19. Sep 2011
Ort: Deutschland
488 Beiträge
 
Delphi 11 Alexandria
 
#4

AW: ist ein custom write möglich?

  Alt 6. Feb 2020, 16:09
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.
Dennis
  Mit Zitat antworten Zitat
kagi3624

Registriert seit: 3. Feb 2020
138 Beiträge
 
Delphi 6 Enterprise
 
#5

AW: ist ein custom write möglich?

  Alt 6. Feb 2020, 16:14
Wozu braucht man diese properties dann noch?
  Mit Zitat antworten Zitat
Dennis07

Registriert seit: 19. Sep 2011
Ort: Deutschland
488 Beiträge
 
Delphi 11 Alexandria
 
#6

AW: ist ein custom write möglich?

  Alt 6. Feb 2020, 16:22
Wozu braucht man diese properties dann noch?
Eigenschaften sind eine Kürzere Schreibweise für Methoden. Sie sind "pseudo-Variablen", die zum Lesen, Schreiben oder beidem entweder auf echte Member-Variablen, oder auf Methoden verweisen.

Eigenschaften können:
  1. in ihrer Sichtbarkeit in abgeleiteten Klassen erhöht werden, indem sie ohne einen Typen und ohne eine Read-oder Write-Klausel in der Kindklasse neu deklariert werden
  2. auf virtuelle Methoden verweisen, die in Kindklassen überschrieben werden können
  3. von der RTTI aus gelesen und analysiert werden und sind somit in Published-Abschnitten zulässig

Das wars. Mehr ist da nicht möglich. Sie sind also so gesehen nur "semantischer Zucker".
Dennis
  Mit Zitat antworten Zitat
Der schöne Günther

Registriert seit: 6. Mär 2013
6.176 Beiträge
 
Delphi 10 Seattle Enterprise
 
#7

AW: ist ein custom write möglich?

  Alt 6. Feb 2020, 16:50
Wozu braucht man diese properties dann noch?
Kein Mensch braucht die. Sie haben keinen Mehrwert und eigentlich nur Nachteile. Die Code-Vervollständigung gibt dir keine Auskunft ob eine Property nur les-, nur schreibbar oder beides ist. Du kannst Properties nicht als var - oder out -Parameter übergeben.

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.
  Mit Zitat antworten Zitat
hoika

Registriert seit: 5. Jul 2006
Ort: Magdeburg
8.276 Beiträge
 
Delphi 10.4 Sydney
 
#8

AW: ist ein custom write möglich?

  Alt 6. Feb 2020, 16:53
Hallo,
Zitat:
Wozu braucht man diese properties dann noch
z.B.

property Active: Boolean Read GetActive write SetActive;

Delphi-Quellcode:
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;
Hier wird nicht einfach nur FActive gesetzt, sondern es werden noch einige Randbedingungen geprüft.
Heiko
  Mit Zitat antworten Zitat
hoika

Registriert seit: 5. Jul 2006
Ort: Magdeburg
8.276 Beiträge
 
Delphi 10.4 Sydney
 
#9

AW: ist ein custom write möglich?

  Alt 6. Feb 2020, 16:56
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.
Heiko
  Mit Zitat antworten Zitat
Benutzerbild von haentschman
haentschman

Registriert seit: 24. Okt 2006
Ort: Seifhennersdorf / Sachsen
5.388 Beiträge
 
Delphi 12 Athens
 
#10

AW: ist ein custom write möglich?

  Alt 6. Feb 2020, 17:06
if Wert=False then ...sowas gehört mit dem Klammerbeutel gepudert.
  Mit Zitat antworten Zitat
Antwort Antwort
Seite 1 von 2  1 2      


Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 09:10 Uhr.
Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz