AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Sprachen und Entwicklungsumgebungen Object-Pascal / Delphi-Language Delphi Ich vermisse Konstanten erst im Konstruktor initialisieren zu können
Thema durchsuchen
Ansicht
Themen-Optionen

Ich vermisse Konstanten erst im Konstruktor initialisieren zu können

Ein Thema von Der schöne Günther · begonnen am 9. Apr 2013 · letzter Beitrag vom 9. Apr 2013
Antwort Antwort
Furtbichler
(Gast)

n/a Beiträge
 
#1

AW: Ich vermisse Konstanten erst im Konstruktor initialisieren zu können

  Alt 9. Apr 2013, 15:28
'strict private' bedeutet doch, das die Variable nur innerhalb der Unit, in der sie deklariert ist, für abgeleitete Klassen sichtbar ist.

Den Quelltext gibst Du einfach nicht weiter, dann hat sich die Sache erledigt. Dein Problem ist ja ein generelles Problem, welches so gar nicht lösbar ist. Oder hab ich mal wieder irgendwas verpasst?
  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
 
#2

AW: Ich vermisse Konstanten erst im Konstruktor initialisieren zu können

  Alt 9. Apr 2013, 15:32
'strict private' bedeutet doch, das die Variable nur innerhalb der Unit, in der sie deklariert ist, für abgeleitete Klassen sichtbar ist.

Den Quelltext gibst Du einfach nicht weiter, dann hat sich die Sache erledigt. Dein Problem ist ja ein generelles Problem, welches so gar nicht lösbar ist. Oder hab ich mal wieder irgendwas verpasst?
strict private nur die direkte Klasse kann darauf zugreifen. Weder innerhalb der Unit noch Ableitungen können darauf zugreifen
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
Furtbichler
(Gast)

n/a Beiträge
 
#3

AW: Ich vermisse Konstanten erst im Konstruktor initialisieren zu können

  Alt 9. Apr 2013, 17:59
Zitat von DeddyH:
...

Ich sag ab jetzt nie wieder was.
  Mit Zitat antworten Zitat
Benutzerbild von haentschman
haentschman

Registriert seit: 24. Okt 2006
Ort: Seifhennersdorf / Sachsen
5.316 Beiträge
 
Delphi 12 Athens
 
#4

AW: Ich vermisse Konstanten erst im Konstruktor initialisieren zu können

  Alt 9. Apr 2013, 18:28
Zitat:
Ich sag ab jetzt nie wieder was.
...joa is denn heut scho Weihnachten ?

mir war grad so, sorry...
  Mit Zitat antworten Zitat
Furtbichler
(Gast)

n/a Beiträge
 
#5

AW: Ich vermisse Konstanten erst im Konstruktor initialisieren zu können

  Alt 9. Apr 2013, 18:42
hmmm. hmmm..mhmmmhmm...hmmhmfgfds
  Mit Zitat antworten Zitat
Benutzerbild von DeddyH
DeddyH

Registriert seit: 17. Sep 2006
Ort: Barchfeld
27.549 Beiträge
 
Delphi 11 Alexandria
 
#6

AW: Ich vermisse Konstanten erst im Konstruktor initialisieren zu können

  Alt 9. Apr 2013, 15:34
'strict private' bedeutet doch, das die Variable nur innerhalb der Unit, in der sie deklariert ist, für abgeleitete Klassen sichtbar ist.
Sicher? Nach meiner Kenntnis ist sie nur in der Klasse sichtbar, zu der sie gehört, aber nicht in abgeleiteten Klassen, selbe Unit oder nicht.

[edit] *Boah eyh*, roter Kasten wieder kaputt (schon das 2. Mal heute) [/edit]
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
 
#7

AW: Ich vermisse Konstanten erst im Konstruktor initialisieren zu können

  Alt 9. Apr 2013, 15:50
Diese beiden (Beispiel-) Units sollten veranschaulichen, was geht, und was nicht
Delphi-Quellcode:
unit BaseClass;

interface

type
  TBaseClass0 = class
  strict private
    FStrictPrivate : Integer;
  private
    FPrivate : Integer;
  strict protected
    FStrictProtected : Integer;
  protected
    FProtected : Integer;
  public
    FPublic : Integer;

    procedure DoSomeThing; virtual;
  end;

  TBaseClass1 = class( TBaseClass0 )

  public
    procedure DoSomeThing; override;
  end;

procedure DoSomeThing( ABase : TBaseClass0 );

implementation

{ TBaseClass0 }

procedure TBaseClass0.DoSomeThing;
begin
  FStrictPrivate := 0;
  FPrivate := 0;
  FStrictProtected := 0;
  FProtected := 0;
  FPublic := 0;
end;

{ TBaseClass1 }

procedure TBaseClass1.DoSomeThing;
begin
  inherited;
  // FStrictPrivate := 1; // nicht möglich
  FPrivate := 1;
  FStrictProtected := 1;
  FProtected := 1;
  FPublic := 1;
end;

procedure DoSomeThing( ABase : TBaseClass0 );
begin
  with ABase do
    begin
      // FStrictPrivate := 3; // nicht möglich
      FPrivate := 3;
      // FStrictProtected := 3; // nicht möglich
      FProtected := 3;
      FPublic := 3;
    end;
end;

end.
Delphi-Quellcode:
unit BaseClass2;

interface

uses
  BaseClass;

type
  TBaseClass2 = class( TBaseClass0 )

  public
    procedure DoSomeThing; override;
  end;

procedure DoSomeThing( ABase : TBaseClass0 );

implementation

{ TBaseClass2 }

procedure TBaseClass2.DoSomeThing;
begin
  inherited;
  // FStrictPrivate := 2; // nicht möglich
  // FPrivate := 2; // nicht möglich
  FStrictProtected := 2;
  FProtected := 2;
  FPublic := 2;
end;

procedure DoSomeThing( ABase : TBaseClass0 );
begin
  with ABase do
    begin
      // FStrictPrivate := 4; // nicht möglich
      // FPrivate := 4; // nicht möglich
      // FStrictProtected := 4; // nicht möglich
      // FProtected := 4; // nicht möglich
      FPublic := 4;
    end;
end;

end.
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
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 18:23 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