![]() |
private, public und der Rest
Hi,
hier ist eine grundsätzliche Frage aufgetaucht : private, protected usw. ist klar. Aber was ist mit dem Rest ? Also die Deklarationen oben in den Forms ? Habe eine Eigenschaft als private deklariert um was zu testen => Zugriffsverletzung. Nach Verschieben in den oberem Bereich ist die Fehlermeldung weg. Wie hängt das alles zusammen ? Bzw. was muß da hin ? |
Re: private, public und der Rest
ohne Angabe => published (ergo für die RTTI greifbar).
[edit] Etwas genauer: Zitat:
|
Re: private, public und der Rest
HI,
alles was ohne eigenen Bezeichner in einer Klasse (insbesondere Forms und Frames) steht, solltest du eigentlich immer schön in Ruhe lassen. Hier gehört der Code hin, den Delphi selbst verwaltet (alle Elemente auf dem Form und alle behandelten Ereignisse). Wie Khabarakh schon sagte, entspricht die Sichtbarkeit dem published, aber eigene Zeilen sollten deshalb trotzdem unter published aufgeführt werden. Ok, auch wenn die Hilfe OH es nicht explizit sagt, bin ich mir doch recht sicher, dass Delphi irgendwo mal behauptet hat, dass dieser Bereich für den automatischen Code vorgesehen ist. Gruß Der Unwissende |
Re: private, public und der Rest
private : Sichtbar nun in Methoden dieser Klasse und in abgeleiteten Klassen, die in der selben Unit definiert sind.
protected: Sichtbar in Merthoden der eigenen Klasse und in den Methoden aller abgeleiteten Klassen public: Auch von anderen Klassen bzw. "Globalcode" sichtbar, wenn Unit in Uses. published: wie schon erwähnt, zusätzliche Registrierung RTTI(Runtime Type Information). Properties von in der IDE registrierten Komponenten, kann man im Objektinspektor manipulieren. Nachtrag: Interessant wieviel Tippfehler ich in ein paar Sätzen produzieren kann ;-) |
Re: private, public und der Rest
Zitat:
|
Re: private, public und der Rest
Also wenn du sehr OOP lastig programmierst, dann ist es natürlich vollkommen egal welchen der beiden Bereiche du wählst ;-) Der einfache Grund, warum du deine eigenen Zeilen eine Sichtbarkeit explizit zuordnen solltest, ist die Eindeutigkeit.
Es ist einfach sauberer (imho), wenn jeder sofort sehen kann, welche Sichtbarkeit explizit vorgesehen wurde (und gerade in Delphi wird so ziemlich alles explizit ausgezeichnet). Und wie gesagt, der von Delphi selbst verwaltete Code landet immer in dem nicht weiter benannten Bereich. Hier kommt also Code hinzu und wird entfernt und das alles automatisch, da dies nicht für deinen Code gilt, denke ich ist es einfach schöner, den richtigen Bereich zu wählen. An der eigentlichen Sichtbarkeit wird sich sicherlich nicht viel ändern und unter dem Aspekt betrachtet ist es egal. Gruß Der Unwissende |
Re: private, public und der Rest
Hallo.
Es tut mir leid wenn ich nochmal nachfragen muss, aber ich hab es leider nicht ganz verstanden :oops: Ich habe als Grundlage den Thread über die MySQL-Verbindung ohne Komponenten von Chewie genommen und für meine Zwecke ein wenig erweitert.
Delphi-Quellcode:
wo ist der Unterschied ob ich die "_myCon: PMySQL" unter private, public oder einfach bei var deklariere ?
type
TForm1 = class(TForm) Button1: TButton; procedure Button1Click(Sender: TObject); procedure FormDestroy(Sender: TObject); procedure FormCreate(Sender: TObject); private _myCon: PMySQL; //unseren Verbindungsdeskriptor { Private-Deklarationen } public { Public-Deklarationen } end; var Form1: TForm1; Ich hab sie bereits in alle drei Bereiche verschoben und die Anwendung funktioniert bei allen drei Möglichkeiten. Sollte mich ja eigentlich freuen das es funktioniert, aber ich würde gerne wissen warum und ob das wirklich egal ist wo sie steht. Gruß Micha |
Re: private, public und der Rest
Bei Verwendung in Methoden der Klasse ist es wirklich "egal" in welchem Bereich deklariert wurde. Von "außen" macht es aber einen Unterschied. Siehe meinen ersten Post in diesem Thread.
|
Re: private, public und der Rest
Hai _SolidSnake,
ich hoffe das ich es richtig zusammen bekomme ;-) Ansonsten einfach mal in der Onlinehilfe schauen :stupid: Zitat:
![]() Wenn Du es unter ![]() Wenn Du es als ![]() |
Re: private, public und der Rest
Zitat:
Grüße ;) |
Alle Zeitangaben in WEZ +1. Es ist jetzt 04:47 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