AGB  ·  Datenschutz  ·  Impressum  







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

property...read..write

Ein Thema von Haegar · begonnen am 20. Feb 2003 · letzter Beitrag vom 21. Feb 2003
Antwort Antwort
Seite 2 von 2     12   
Benutzerbild von sakura
sakura

Registriert seit: 10. Jun 2002
Ort: München
11.412 Beiträge
 
Delphi 11 Alexandria
 
#11
  Alt 21. Feb 2003, 08:01
auto.alter := 10; ist schon richtig. Intern ruft Delphi dann die Methode schreibAlter auf und übergibt den Wert 10 im AX Register des Prozessors.

Nach aussen sieht das Ganze wie eine Variable aus und intern kann Dein Objekt/Deine Klasse angemessen darauf reagieren.

......

P.S.: In Delphi ist es üblich anstatt von liesAlter und schreibAlter die Namen GetAlter und SetAlter zu nutzen, sowie auch den ersten Buchstaben des Namens groß zu schreiben (die Kleinschreibung ist z.B. in Java üblich).
Daniel W.
Ich bin nicht zurück, ich tue nur so
  Mit Zitat antworten Zitat
R.Meyrat

Registriert seit: 6. Okt 2002
22 Beiträge
 
Delphi 2005 Personal
 
#12
  Alt 21. Feb 2003, 08:37
Hallo Zusammen

Das beispiel kommt mir sehr bekannt vor "Kochbuch Borland Delphi 5" von Walter Dobrez und Thomas Kowalski Rezept 262.

da haben die den constructor "Erzeugen(..)" genannt un den destructor " Entfernen"...


roger
  Mit Zitat antworten Zitat
Haegar

Registriert seit: 10. Dez 2002
Ort: Peitz
319 Beiträge
 
Delphi 7 Professional
 
#13
  Alt 21. Feb 2003, 09:54
ja da beispiel, is aus dem buch "Delphi 6 grundlagen und Profiwissen".
da haben sie das beispiel schrittweise ein wenig optimiert, so das dann die destructor-prozedur wegfiel! is aber ansonsten ganz gut, und kapiert hab ichs nu auch.

danke leutz
ciao haegar
  Mit Zitat antworten Zitat
oki

Registriert seit: 30. Dez 2002
Ort: Brandshagen
1.819 Beiträge
 
Delphi 2007 Professional
 
#14
  Alt 21. Feb 2003, 10:19
Noch mal kurz zum Sinn des Beispiels.
Dem Autor geht es sicher darum die Möglichkeiten der Verwendung von Propertys zu zeigen.

Propertys werden in der Regel immer im Privatteil deklariert, damit nicht jemand ohne tiefere Kenntnis des Objektes etwas tun was er nicht soll.

Ist ein Property (Eigenschaft) eines Objektes nur für den Lesezugriff bestimmt, so kann man das am Besten im Public-Teil über die Deklaration Read definieren.

Was müßte man nicht alles tun um das Schreiben von außen zu verhindern. Ein imenser Aufwand. Es muß auch keiner in der Doku nachlesen ob er auf die Eigenschaft schreiben darf (wer liest schon Dokus?). Es wird einfach verhindert.

Somit ist schon mal klar, dass die Deklaration von Variablen in Objekten generell im private-Teil erfolgen sollte und die Art des Zugriffes im Public-Teil mit read und write bestimmt wird.

Warum nun Proceduren und F
unktionen?

Sicher kann mann auch folgendes machen:

Delphi-Quellcode:
interface
type TAuto=class(TObject)
  private
   bj:integer;
  public
   constructor erzeugen(xpos,ypos:integer; color:longint, baujahr:integer);
   property Alter:integer read bj write bj;
end;
  Mit Zitat antworten Zitat
oki

Registriert seit: 30. Dez 2002
Ort: Brandshagen
1.819 Beiträge
 
Delphi 2007 Professional
 
#15
  Alt 21. Feb 2003, 10:31
Irgentwie hat mein Browser gesponnen und ich muß neu weitermachen!

Die von mir gezeigte Form macht in Bezug auf die Variable bj das gleiche wie das Urbeispiel mit einem feinen Unterschied. Was ist, wenn in meinem Objekt bei der Veränderung einer Variablen noch weitere Aktionen ausgeführt werden müssen? Genau dann ist es prima mittels read oder Write Proceduren und Funktionen nutzen zu können. Man übergibt den Parameter und tun dann auch alles nötige in einem Abwasch. Und das schöne, von außen sieht alles gleich aus.

sowohl bei Deinem wie bei meinem Beispiel wird der Wert in Deiner Form1 mit
Auto.Alter := 10; geändert. Mit der Procedure kann dann aber automatisch noch mehr getan werden.

kleines Bsp.

Du möchtest einen Klartext ändern. Zum Bsp. wie folgt:

Delphi-Quellcode:
procedure SetAlter(Alter : Integer);
begin
bj := Alter;
If bj < 2 then FAlterText := 'neu';
IF (bj > 1) and (bj < 5) then FAlterText := 'noch nicht Schrott';
.
.
.
und so weiter. (die Art der Umsetzung ist jetzt egal, es geht ums Prinzip)

FAlterText währe in deinem Objekt TAuto genauso ein Property auf das man dann vielleicht nur lesend zugreift.

o.k. das wars von mir,

Gruß oki
  Mit Zitat antworten Zitat
R.Meyrat

Registriert seit: 6. Okt 2002
22 Beiträge
 
Delphi 2005 Personal
 
#16
  Alt 21. Feb 2003, 10:31
Bei der Verwendung von Funktionen und Proceduren können die Werte zusätzlich geprüft werden (Eingabe), damit zum Beispiel nur Werte zwischen 1900 und 2099 als Baujahr gültig sind.
Bei der Ausgabe könnte man den Wert zum Beispiel umwandeln in einen andern Typ.

Beispiel:
Geschwindigkeit wird intern als Integer gebraucht aber für die Ausgabe würde String reichen (nicht gerade ein gutes Beispiel ich weiss). aber Zweck ist deutlich.


gruss roger


@OKI binwohl zwischen deinen Postings gelandet, du hast ja das gleiche erklärt wie ich
  Mit Zitat antworten Zitat
Haegar

Registriert seit: 10. Dez 2002
Ort: Peitz
319 Beiträge
 
Delphi 7 Professional
 
#17
  Alt 21. Feb 2003, 11:15
danke, hat mir echt weitergeholfen, bin mal wieder ein stück schlauer!

dann werd ich mich mal ransetzen und probieren
ciao haegar
  Mit Zitat antworten Zitat
Antwort Antwort
Seite 2 von 2     12   


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 14:54 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