AGB  ·  Datenschutz  ·  Impressum  







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

Eigener Konstruktor

Ein Thema von FriendOfDelphi · begonnen am 7. Jun 2010 · letzter Beitrag vom 7. Jun 2010
Antwort Antwort
Seite 2 von 3     12 3      
Benutzerbild von uligerhardt
uligerhardt

Registriert seit: 19. Aug 2004
Ort: Hof/Saale
1.746 Beiträge
 
Delphi 2007 Professional
 
#11

AW: Eigener Konstruktor

  Alt 7. Jun 2010, 15:47
Wenn ich den Quellcode komplett, also Klassendefinition und die Verwendung der Klasse in eine Unit schreibe, dann kann ich einen Breakpoint im Konstruktor setzen und dieser wird auch durchlaufen.
Wenn ich, wie von mir bevorzugt, die Klasse in einer eigenen Unit definiere und diese in einer anderen Unit nur verwenden will, dann nimmt der Compiler die Breakpoints im Konstruktor weg, so dass ich dort keinen mehr setzen kann.
Das dürfte daran liegen, dass du den Konstruktor als privat deklariert hast. Wenn du ihn von außen - insbesondere aus einer anderen Unit - aufrufen willst, wäre public angesagt.
Uli Gerhardt
  Mit Zitat antworten Zitat
Benutzerbild von Jens Hartmann
Jens Hartmann

Registriert seit: 11. Jan 2009
Ort: Wilnsdorf
1.439 Beiträge
 
Delphi XE2 Professional
 
#12

AW: Eigener Konstruktor

  Alt 7. Jun 2010, 15:48
Hallo,

ich bin mir nicht sicher, aber in einer anderen Unit kann es nicht gehen, weil der constructor Privat ist...

Delphi-Quellcode:
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;
EDIT... Zu spät...

Gruß Jens
Jens Hartmann
Das Leben selber ist zu kurz, also nutze jeden Tag wie er kommt.
  Mit Zitat antworten Zitat
FriendOfDelphi

Registriert seit: 21. Mai 2010
163 Beiträge
 
Delphi 5 Professional
 
#13

AW: Eigener Konstruktor

  Alt 7. Jun 2010, 15:58
Befindet sich die Unit (bzw. deren Pfad) im Suchpfad?
Die Unit ist im selben Projekt.
Der Compiler meckert nicht.
Die Unit wird also gefunden.
Herzlichen Gruß
FriendOfDelphi
  Mit Zitat antworten Zitat
Benutzerbild von freak4fun
freak4fun

Registriert seit: 22. Sep 2004
Ort: Hannover
1.807 Beiträge
 
Delphi 10.2 Tokyo Starter
 
#14

AW: Eigener Konstruktor

  Alt 7. Jun 2010, 16:06
Befindet sich die Unit (bzw. deren Pfad) im Suchpfad?
Die Unit ist im selben Projekt.
Der Compiler meckert nicht.
Die Unit wird also gefunden.
DIe Unit wird gefunden, aber der Constructor nicht. Wenn du eine Klasse in einer Unit hast, kann da alles auf den Private-Bereich zugreifen. Wenn du nun aber die Klasse in eine andere Unit schreibst, kann die erste Unit nicht mehr auf den Private-Bereich der nun ausgelagerten Klasse zuegreifen. Daraus folgt, das du den Constructor als Public deklarieren musst. Dann wird auch der Breakpoint nicht mehr entfernt.
Christian
IT: Schließen Sie bitte das Fenster. User: Die Tür auch?
i++; // zaehler i um 1 erhoehen
  Mit Zitat antworten Zitat
FriendOfDelphi

Registriert seit: 21. Mai 2010
163 Beiträge
 
Delphi 5 Professional
 
#15

AW: Eigener Konstruktor

  Alt 7. Jun 2010, 16:08
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?
Herzlichen Gruß
FriendOfDelphi
  Mit Zitat antworten Zitat
Benutzerbild von DeddyH
DeddyH

Registriert seit: 17. Sep 2006
Ort: Barchfeld
27.625 Beiträge
 
Delphi 12 Athens
 
#16

AW: Eigener Konstruktor

  Alt 7. Jun 2010, 16:24
Was soll man wie nicht machen? Vordefinierte Werte im Konstruktor zuweisen? Dafür ist der doch u.a. da.
Detlef
"Ich habe Angst vor dem Tag, an dem die Technologie unsere menschlichen Interaktionen übertrumpft. Die Welt wird eine Generation von Idioten bekommen." (Albert Einstein)
Dieser Tag ist längst gekommen
  Mit Zitat antworten Zitat
Benutzerbild von Sir Rufo
Sir Rufo

Registriert seit: 5. Jan 2005
Ort: Stadthagen
9.454 Beiträge
 
Delphi 10 Seattle Enterprise
 
#17

AW: Eigener Konstruktor

  Alt 7. Jun 2010, 16:24
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?
Man macht es halt so, dass es funktioniert. Dann ist das "richtiger" Quellcode.

und wenn beim Create der hinterlegte Code ausgeführt werden soll, dann muss der constructor public sein.
Kaum macht man's richtig - schon funktioniert's
Zertifikat: Sir Rufo (Fingerprint: ‎ea 0a 4c 14 0d b6 3a a4 c1 c5 b9 dc 90 9d f0 e9 de 13 da 60)
  Mit Zitat antworten Zitat
Benutzerbild von Jens Hartmann
Jens Hartmann

Registriert seit: 11. Jan 2009
Ort: Wilnsdorf
1.439 Beiträge
 
Delphi XE2 Professional
 
#18

AW: Eigener Konstruktor

  Alt 7. Jun 2010, 16:25
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
Jens Hartmann
Das Leben selber ist zu kurz, also nutze jeden Tag wie er kommt.
  Mit Zitat antworten Zitat
mkinzler
(Moderator)

Registriert seit: 9. Dez 2005
Ort: Heilbronn
39.861 Beiträge
 
Delphi 11 Alexandria
 
#19

AW: Eigener Konstruktor

  Alt 7. Jun 2010, 16:29
Ein constructor sollte immer public sein. Soll die Klasse nur in einer Unit verwendbar sein dann deklariert man sie halt unter Implementation
Markus Kinzler
  Mit Zitat antworten Zitat
Tryer

Registriert seit: 16. Aug 2003
200 Beiträge
 
#20

AW: Eigener Konstruktor

  Alt 7. Jun 2010, 17:07
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
  Mit Zitat antworten Zitat
Antwort Antwort
Seite 2 von 3     12 3      


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 19:28 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