![]() |
Delphi-Version: 5
Frage zu Klassenvariablen
Hallo,
es ist mir zwar etwas peinlich, aber ich muss mal eine Anfängerfrage zu Variablen in Delphi stellen.
Delphi-Quellcode:
TForm1 = class(TForm)
{was für einen status haben Variablen an dieser Stelle?} private { private declarations } public { public declarations } end; |
AW: Frage zu Klassenvariablen
Die Sichtbarkeit ist auf jeden Fall wie
Delphi-Quellcode:
. Was für einen Status meinst du genau?
published
FYI "Klassenvariablen" heißen Felder. |
AW: Frage zu Klassenvariablen
Dankeschön! Das klärt schon das meiste.
Ich hab grad mal spasseshalber 'published' davor geschrieben und der compiler (Lazarus/Free Pascal) meckert nicht. Dann wird das der Einfachheit halber weg gelassen? Und ist es richtig dass der Hauptunterschied zwischen published und public darin liegt, dass published für die Anzeige im Objektinspektor benötigt wird? Liebe Grüße Julian |
AW: Frage zu Klassenvariablen
Ja, das ist richtig.
|
AW: Frage zu Klassenvariablen
Man sollte der Vollständigkeit halber anführen dass das dein Formular (TForm) ein Sonderfall ist: Normalerweise ist die "Sichtbarkeit" bei Klassen und Records ohne weitere Angabe
Delphi-Quellcode:
.
public
Delphi-Quellcode:
leitet sich letztendlich von
TForm
Delphi-Quellcode:
aus
TPersistent
Delphi-Quellcode:
ab. Bei dieser Klasse wurde von den Delphi-Entwicklern eine Compiler-Einstellung vorgenommen dass es standardmäßig published sein soll:
System.Classes
Zitat:
![]() Heißt:
Delphi-Quellcode:
type
TMyObject = class(TObject) someField: Integer; // <<< public end; TMyRecord = record someField: Integer; // <<< public end; TMyComponent = class(TComponent) someField: Integer; // <<< published end; |
AW: Frage zu Klassenvariablen
Das geht so nicht
Delphi-Quellcode:
TMyComponent = class(TComponent)
someField: Integer; // <<< Compiler-Fehler end; |
AW: Frage zu Klassenvariablen
Tatsächlich: "Es wurde versucht, ein Feld in einer Klasse als published zu deklarieren, das weder ein Klassen- noch ein Schnittstellentyp ist."
![]() Dann machen wir aus "Integer" einfach "TObject" 😉 Ich glaube es bald Zeit für den ersten Covfefe ☕ |
AW: Frage zu Klassenvariablen
Naja, published ist für den Designer konzipiert worden und den VCL-Komponentstreaming-Mechanismus, den er verwendet. Der streamed published properties und objekte in published fields, einfache Typen in published fields kann er nicht...
|
Alle Zeitangaben in WEZ +1. Es ist jetzt 01:05 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-2025 by Thomas Breitkreuz