Einzelnen Beitrag anzeigen

CCRDude

Registriert seit: 9. Jun 2011
675 Beiträge
 
FreePascal / Lazarus
 
#3

AW: Ich verstehe das Problem mit dem Sichtbarkeitsattribut nicht ganz

  Alt 24. Jan 2023, 13:35
"Es knallte" ist so eine wunderbare Fehlerbeschreibung!

Laut Doku hast Du recht:

Zitat:
Ein Element ohne Attribut erhält automatisch die Sichtbarkeit des vorhergehenden Elements in der Deklaration. 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.
TStringList stammt von TPersistent ab, für das $M+ definiert ist. Daher published, daher ungeeignet. TObject noch ohne $M+, daher public, daher möglich. Einfach kurz die Quellen zu TObject und TStringList angeschaut, schon hat man's

Mein Delphi (XE - bin seit dem glücklich auf Lazarus umgestiegen, daher nichts neueres) "knallt" in dem Sinne, als dass es mir das zweite schlicht nicht kompiliert.

Nachtrag:

Folgendes knallt dann logischerweise auch:
Code:
type
  {$M+}
  TClass3 = class(TObject)
    FTest: string;
  end;

Geändert von CCRDude (24. Jan 2023 um 13:37 Uhr)
  Mit Zitat antworten Zitat