AW: Eigener Konstruktor
Zitat:
|
AW: Eigener Konstruktor
Hallo,
ich bin mir nicht sicher, aber in einer anderen Unit kann es nicht gehen, weil der constructor Privat ist...
Delphi-Quellcode:
EDIT... Zu spät...
type
TAuto = class(TObject) private FFarbe: string; procedure SetFarbe(Farbe: string); constructor Create(col: string);//hier eventuell mal schauen. public property Farbe: string read FFarbe write SetFarbe; end; Gruß Jens |
AW: Eigener Konstruktor
Zitat:
Der Compiler meckert nicht. Die Unit wird also gefunden. |
AW: Eigener Konstruktor
Zitat:
|
AW: Eigener Konstruktor
Ok. Das war's.
Der Konstruktor muss public sein. Ist das denn so "richtiger" Quellcode? Ich meine gelesen zu haben, dass man das so nicht machen soll, oder? |
AW: Eigener Konstruktor
Was soll man wie nicht machen? Vordefinierte Werte im Konstruktor zuweisen? Dafür ist der doch u.a. da.
|
AW: Eigener Konstruktor
Zitat:
und wenn beim Create der hinterlegte Code ausgeführt werden soll, dann muss der constructor public sein. |
AW: Eigener Konstruktor
Hallo,
z.B. privat, ist nur in der eigenen Unit sichtbar. public im gesamten Projekt. Man sollte also als privat deklarieren, was nach außen hin nicht sichtbar sein soll, z.B. Methoden, die in der Klasse selbst benötigt werden. Da du den Constructor ja außen benötigen tust, muss er public sein. Eine Aufstellung dieser Deklarationen findest du in der Hilfe von Delphi... Gruß Jens |
AW: Eigener Konstruktor
Ein constructor sollte immer public sein. Soll die Klasse nur in einer Unit verwendbar sein dann deklariert man sie halt unter Implementation
|
AW: Eigener Konstruktor
Und falls SetFarbe irgendwas "wichtiges" macht, dann würde ich einfach auch im Constructor SetFarbe('rosa') bzw. Farbe := 'rosa' aufrufen statt nur das Feld FFarbe zu setzen.
Grüsse, Dirk |
Alle Zeitangaben in WEZ +1. Es ist jetzt 20:09 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