@Der_Unwissende
Das war ausführlich!!! Danke.
@Marabu
Danke für deine Klarstellung
So ist mir das schon klar. Und in vielen Punkten stimme ich mit euch überein.
Vieleicht war das Beispiel des Eingangspost das Irreführende.
Für mich hatte es so ausgesehen, daß der Programmcode von little_budda in einer Procedure vorkommt.
Delphi-Quellcode:
Procedure EineProcedure;
var
slOutList : tstrings;
begin
slOutList := tstringlist.create();
// Hier wird irgendwas gemacht
slOutList.free;
end;
Dies wäre für mich nicht sinnvoll. Dort würde ich auf Jeden Fall "slOutList : tstringlist;" deklarieren.
Was anderes ist es, wenn ich eine Stringliste in einer Function als Parameter verwenden möchte. Dort verwende ich natürlich die niedrigst mögliche Klasse.
Delphi-Quellcode:
Procedure EineProcedure(aStrings:TStrings);
begin
// Hier wird irgendwas mit aStrings gemacht
end;
Der Function kann ich so alle Objekte übergeben, die von TStrings abgeleitet wurden. DAs macht sinn.
Es macht auch sinn z.B. TStrings statt Tstringlist als Property in einer einer Klasse zu definieren, um der Klasse ein Objekt zu übergeben, welches von TStrings abgeleitet ist um mit diesen Daten weiterzuarbeiten. Aber dann wird es in der Klasse nicht schon instanziert, wie es das Beispiel von little_budda sugeriert.
So ähnlich ist es ja auch bei TImage/TPicture. Dort wird das Bitmap,Image,Metafile,etc auch nicht im constructor von TPicture instanziert, sondern erst beim Zugriff auf das Property Picture.
Gerd