AGB  ·  Datenschutz  ·  Impressum  







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

[BDS2006] Create wird nicht versteckt?

Ein Thema von DevilsCamp · begonnen am 26. Okt 2006 · letzter Beitrag vom 27. Okt 2006
Antwort Antwort
DevilsCamp
(Gast)

n/a Beiträge
 
#1

[BDS2006] Create wird nicht versteckt?

  Alt 26. Okt 2006, 23:18
Ich habe folgenden Code:
Unit1:
Delphi-Quellcode:
unit Unit1;

interface

uses
  Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
  Dialogs;

type
  TForm1 = class(TForm)
  private
    { Private-Deklarationen }
  public
    { Public-Deklarationen }
  end;

var
  Form1: TForm1;

implementation

{$R *.dfm}

uses Unit2;

procedure TForm1.FormCreate(Sender: TObject);
var
  test: TTest;
begin
  test := TTest.Create;
  Sleep(1000);
  test.Free;
end;

end.

Unit2:
Delphi-Quellcode:
unit Unit2;

interface

uses Windows, Classes;

type
  TTest = class(TObject)
  private
    { private-Deklarationen }
    constructor Create;
  protected
    { protected-Deklarationen }
  public
    { public-Deklarationen }

  published
    { published-Deklarationen }
  end;

implementation

{ TTest }

constructor TTest.Create;
begin
  inherited;
end;

end.

Theoretisch sollte der Konstruktor von TTest in Unit1 nicht mehr sichtbar sein. Ich kann aber den Code ohne Probleme compilieren. Warum?
  Mit Zitat antworten Zitat
Benutzerbild von Bernhard Geyer
Bernhard Geyer

Registriert seit: 13. Aug 2002
17.195 Beiträge
 
Delphi 10.4 Sydney
 
#2

Re: [BDS2006] Create wird nicht versteckt?

  Alt 26. Okt 2006, 23:21
Er findet ja den Construktor der Basisklasse und wird diesen verwenden.
Windows Vista - Eine neue Erfahrung in Fehlern.
  Mit Zitat antworten Zitat
Muetze1
(Gast)

n/a Beiträge
 
#3

Re: [BDS2006] Create wird nicht versteckt?

  Alt 26. Okt 2006, 23:41
AFAIR kann man keine Methoden mit einer höheren Sichtbarkeit in ihrer Sichtbarkeit verringern. Immer nur erhöhen.
  Mit Zitat antworten Zitat
Benutzerbild von Bernhard Geyer
Bernhard Geyer

Registriert seit: 13. Aug 2002
17.195 Beiträge
 
Delphi 10.4 Sydney
 
#4

Re: [BDS2006] Create wird nicht versteckt?

  Alt 27. Okt 2006, 07:06
Zitat von Muetze1:
AFAIR kann man keine Methoden mit einer höheren Sichtbarkeit in ihrer Sichtbarkeit verringern. Immer nur erhöhen.
Vor allem dann nicht wenn die Methode der Basisklasse keine Virtuelle/Dynamische Methode ist und damit kein Overloading durchgeführt wird.
Windows Vista - Eine neue Erfahrung in Fehlern.
  Mit Zitat antworten Zitat
DevilsCamp
(Gast)

n/a Beiträge
 
#5

Re: [BDS2006] Create wird nicht versteckt?

  Alt 27. Okt 2006, 07:37
Dann sind die ganzen Tipps, die sowas vorschlagen also für'n A.... ...


Aber wie könnte ich den Konstruktor verstecken, damit ich z.B. eine Klasse schreiben kann, die nur unter bestimmten Umständen (z.B. aus einer anderen Klasse heraus) instanziiert werden kann?
  Mit Zitat antworten Zitat
mkinzler
(Moderator)

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

Re: [BDS2006] Create wird nicht versteckt?

  Alt 27. Okt 2006, 07:42
Deklariere sie im Interface-Teil der Unit (die andere Klasse muß sich dann in der selben Unit befinden)
Markus Kinzler
  Mit Zitat antworten Zitat
DevilsCamp
(Gast)

n/a Beiträge
 
#7

Re: [BDS2006] Create wird nicht versteckt?

  Alt 27. Okt 2006, 07:48
Zitat von mkinzler:
Deklariere sie im Interface-Teil der Unit (die andere Klasse muß sich dann in der selben Unit befinden)
Das allerdings würde dazu führen, dass ich diese Klasse nicht als private Member-Klasse verwenden kann.
  Mit Zitat antworten Zitat
Benutzerbild von uligerhardt
uligerhardt

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

Re: [BDS2006] Create wird nicht versteckt?

  Alt 27. Okt 2006, 08:40
Zitat von DevilsCamp:
Aber wie könnte ich den Konstruktor verstecken, damit ich z.B. eine Klasse schreiben kann, die nur unter bestimmten Umständen (z.B. aus einer anderen Klasse heraus) instanziiert werden kann?
Zur Compilezeit gar nicht, siehe hier.

Uli.
Uli Gerhardt
  Mit Zitat antworten Zitat
DevilsCamp
(Gast)

n/a Beiträge
 
#9

Re: [BDS2006] Create wird nicht versteckt?

  Alt 27. Okt 2006, 09:22
Zitat von uligerhardt:
siehe hier.
So mache ich es bisher.
Habe aber gehofft, es gibt eine Möglichkeit ohne Exception...
  Mit Zitat antworten Zitat
Antwort Antwort


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 10:06 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