"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;