Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Object-Pascal / Delphi-Language (https://www.delphipraxis.net/32-object-pascal-delphi-language/)
-   -   Delphi Feld ist weder private noch public (https://www.delphipraxis.net/81013-feld-ist-weder-private-noch-public.html)

Alexander Roth 19. Nov 2006 08:44


Feld ist weder private noch public
 
Hallo,

ich habe bis jetzt immer bei Klassen entweder die Felder/Methoden public oder private gemacht. Doch nun habe ich irgendwo diese Deklaration gefunden:
Delphi-Quellcode:
  TMyclass=class
    edit:Tedit;
  private
    editprivate:Tedit;
  public
    editpublic:Tedit;
  end;
Was ist das edit jetzt? Was kann man damit machen? Was soll das sein? etc...?

Hoffe ihr kennst die Antwort.

Gruß Alexander

bttb930 19. Nov 2006 08:50

Re: Feld ist weder private noch public
 
das feld ist jetzt published.

es gibt in dieser reihenfolge:

private
protected
public
published

näheres in der online-hilfe.

Elvis 19. Nov 2006 08:50

Re: Feld ist weder private noch public
 
Delphi-Quellcode:
TMyclass=class
    edit:Tedit; // published
  private
    editprivate:Tedit;
  public
    editpublic:Tedit;
  end;
Delphis Standardsichtbarkeit ist published. Und das ist auch nicht neu, das siehst du bei jeder Klasse, die mit einem visuellen Designer bearbeitet wurde. ;)

Alexander Roth 19. Nov 2006 09:11

Re: Feld ist weder private noch public
 
Ahhhhh.....
Das ist gut.

Danke für die schnelle Antwort.
Das erklärt alles.

Und das ist mir bisher nie so richtig aufgefallen:
Delphi-Quellcode:
  TForm1 = class(TForm)
    BDraw: TButton;
    GroupBox2: TGroupBox;
    GroupBox3: TGroupBox;
  private
    { Private-Deklarationen }
  public
    { Public-Deklarationen }
  end;
Gruß Alexander

Hawkeye219 19. Nov 2006 09:17

Re: Feld ist weder private noch public
 
Die Standardsichtbarkeit ist nicht immer "published"!

Zitat:

Zitat von Delphi-Hilfe
Die Elemente am Anfang einer Klassendeklaration ohne explizite Sichtbarkeitsangabe werden standardmäßig als published deklariert, wenn die Klasse im Status {$M+} compiliert oder von einer mit {$M+} compilierten Klasse abgeleitet wurde. Andernfalls erhalten sie das Attribut public.

Hier ein Beispiel:

Delphi-Quellcode:
TMyObject1 = class (TObject)
  FFoo : Integer;
  property Foo: Integer read FFoo write FFoo;
end;

{$M+}
TMyObject2 = class (TObject)
  FFoo : Integer;
  property Foo: Integer read FFoo write FFoo;
end;
{$M-}
Die Deklaration von TMyObject1 wird ohne Probleme übersetzt, bei der Deklaration von TMyObject2 meldet der Compiler einen Fehler.

Gruß Hawkeye


Alle Zeitangaben in WEZ +1. Es ist jetzt 18:34 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