AGB  ·  Datenschutz  ·  Impressum  







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

Pointer beim Komponentenprogrammieren

Ein Thema von F.W. · begonnen am 5. Dez 2004 · letzter Beitrag vom 6. Dez 2004
Antwort Antwort
Seite 1 von 2  1 2      
Benutzerbild von F.W.
F.W.

Registriert seit: 28. Jul 2003
Ort: Zittau
636 Beiträge
 
#1

Pointer beim Komponentenprogrammieren

  Alt 5. Dez 2004, 21:13
Hallöle alle miteinander und nen schönen 2. Advent erstmal !

Aber jetzt zu meinem Problemchen:
Sitze gerade mal wieder an einer Komponente. Die Kompo hat unter anderem folgendes property:
Delphi-Quellcode:
  private
    FGrid: TStringGrid;
  published
    property Grid: TStringGrid read FGrid write FGrid;
Wenn ich jetzt im weiteren Quelltext der komponente auf die StringGrid zugreifen möchte, muss ich dann FGrid oder Grid benutzen?

Also z.B.:
Delphi-Quellcode:
if FGrid <> NIL then
   FGrid.Cells[X, Y] := 'XY';

//oder

if Grid <> NIL then
   Grid.Cells[X, Y] := 'XY';
Danke schonmal!
  Mit Zitat antworten Zitat
Benutzerbild von Helmi
Helmi

Registriert seit: 29. Dez 2003
Ort: Erding, Republik Bayern
3.323 Beiträge
 
Delphi XE2 Professional
 
#2

Re: Pointer beim Komponentenprogrammieren

  Alt 5. Dez 2004, 21:17
du musst:

Code:
if FGrid <> NIL then
   FGrid.Cells[X, Y] := 'XY';
benutzen
  Mit Zitat antworten Zitat
Benutzerbild von SirThornberry
SirThornberry
(Moderator)

Registriert seit: 23. Sep 2003
Ort: Bockwen
12.235 Beiträge
 
Delphi 2006 Professional
 
#3

Re: Pointer beim Komponentenprogrammieren

  Alt 5. Dez 2004, 21:22
es ist egal. du kannst auch "Grid" benutzen da "Grid" auf "fGrid" verweist. Richtiger ist es "fGrid" zu nutzen.
Jens
Mit Source ist es wie mit Kunst - Hauptsache der Künstler versteht's
  Mit Zitat antworten Zitat
Benutzerbild von glkgereon
glkgereon

Registriert seit: 16. Mär 2004
2.287 Beiträge
 
#4

Re: Pointer beim Komponentenprogrammieren

  Alt 5. Dez 2004, 22:12
Zitat:
Richtiger ist es "fGrid" zu nutzen.
und noch besser wäre
"Besser ist es "fGrid zu nutzen"

aber abgesehen davon:
ich hätte spontan gesagt
"nimm Grid, weil wenn du schonmal ne property gemacht hast, kannst du die ja auch nutzen"...oder nicht?
»Unlösbare Probleme sind in der Regel schwierig...«
  Mit Zitat antworten Zitat
teebee

Registriert seit: 17. Jan 2003
Ort: Köln
460 Beiträge
 
Delphi 6 Professional
 
#5

Re: Pointer beim Komponentenprogrammieren

  Alt 5. Dez 2004, 22:17
Genaugenommen ist der direkte Zugriff auf die Eigenschaftsdaten falsch:
Zitat von Online-Hilfe:
Wenn eine Methode oder eine andere Eigenschaft diese Daten ändern muß, muß dies über die Eigenschaft und nicht über einen direkten Zugriff auf die gespeicherten Daten erfolgen. Dadurch ist sichergestellt, daß die Implementierung einer geerbten Eigenschaft geändert werden kann, ohne daß dabei abgeleitete Komponenten ungültig werden.
Gruß, teebee
  Mit Zitat antworten Zitat
Chewie

Registriert seit: 10. Jun 2002
Ort: Deidesheim
2.886 Beiträge
 
Turbo Delphi für Win32
 
#6

Re: Pointer beim Komponentenprogrammieren

  Alt 5. Dez 2004, 22:39
Zitat von teebee:
Genaugenommen ist der direkte Zugriff auf die Eigenschaftsdaten falsch:
Falsch ist es im Sinne der objektorientierten Programmierung. Und darüber hinaus ist es schwachsinnig. Du definierst dir deine Property ja, um nicht über das Objektfeld zu gehen. Darüber hinaus ist das Feld ja privat. Solange du in der gleichen Unit bist, kannst du zwar auch private Felder anderer Klassen verändern, aber das ist ja nur ein Zugeständnis an das C++-Konzept der Friends. Spätestens wenn du in einer anderen Unit auf deine Klasse zugreifst, wirst du Probleme kriegen.
Martin Leim
Egal wie dumm man selbst ist, es gibt immer andere, die noch dümmer sind
  Mit Zitat antworten Zitat
Benutzerbild von F.W.
F.W.

Registriert seit: 28. Jul 2003
Ort: Zittau
636 Beiträge
 
#7

Re: Pointer beim Komponentenprogrammieren

  Alt 6. Dez 2004, 11:22
Also die letzten 2 Posts versteh ich nicht ganz, speziell das letzte:
Beim Componentenproggen muss man doch als Eigenschaft
property X: Integer read FX write FX
das dann auf eine privatedeklarierte Variable mit (vorbildlich) F vorangestellt, damit man den Überblick leichter halten kann.
Wie soll ich denn sonst eine Grid hinbekommen, die man bei bedarf mit aufs Formular setzt und dann in meiner Komponente auf sie Verlinkt?
  Mit Zitat antworten Zitat
Benutzerbild von dizzy
dizzy

Registriert seit: 26. Nov 2003
Ort: Lünen
1.932 Beiträge
 
Delphi 7 Enterprise
 
#8

Re: Pointer beim Komponentenprogrammieren

  Alt 6. Dez 2004, 12:44
Sauber wäre es dann, wenn du innerhalb der Implementierung der Klasse ihre private-Variable "FGrid" ansprichst, aus allen anderen Klassen heraus aber die Property "Grid". Auch wenn sie in der selben Unit liegen!
Das ist dem OOP-Konzept imho am besten zuträglich.
Fabian K.
INSERT INTO HandVonFreundin SELECT * FROM Himmel
  Mit Zitat antworten Zitat
teebee

Registriert seit: 17. Jan 2003
Ort: Köln
460 Beiträge
 
Delphi 6 Professional
 
#9

Re: Pointer beim Komponentenprogrammieren

  Alt 6. Dez 2004, 12:57
Zitat von dizzy:
Sauber wäre es dann, wenn du innerhalb der Implementierung der Klasse ihre private-Variable "FGrid" ansprichst
Ganz sauber wird es erst, wenn das private Feld nur in den Get/Set-Methoden der Property angesprochen wird und an allen anderen Stellen in der Klasse über die Property gegangen wird.

Gruß, teebee
  Mit Zitat antworten Zitat
Benutzerbild von Sanchez
Sanchez

Registriert seit: 24. Apr 2003
Ort: Neumarkt Stmk
892 Beiträge
 
Delphi XE6 Enterprise
 
#10

Re: Pointer beim Komponentenprogrammieren

  Alt 6. Dez 2004, 13:02
Zitat von teebee:
Ganz sauber wird es erst, wenn das private Feld nur in den Get/Set-Methoden der Property angesprochen wird und an allen anderen Stellen in der Klasse über die Property gegangen wird.
Würd ich auch sagen. Ansonsten kanns ganz schnell unübersichtlich werden. In dem konkreten Beispiel ist eigentlich egal, weil die Property sowieso direkt auf die Variable zeigt.
Ich würd trotzdem über die Property gehen.

grüße, daniel
Daniel
Testen ist feige!
  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 15:48 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