Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Object-Pascal / Delphi-Language (https://www.delphipraxis.net/32-object-pascal-delphi-language/)
-   -   Delphi Unterschied zwischen TStrings und TStringList Deklaration (https://www.delphipraxis.net/93672-unterschied-zwischen-tstrings-und-tstringlist-deklaration.html)

Chemiker 9. Jun 2007 09:22


Unterschied zwischen TStrings und TStringList Deklaration
 
Hallo,

ich habe mal eine Frage rein interessehalber, wenn man eine StringList deklariert warum dies mit TStrings geschieht.

In der Delphi-Hilfe ist dies angegeben:

Delphi-Quellcode:
procedure TForm1.Button1Click(Sender: TObject);
var TempList: TStrings; { Liste deklarieren }
begin
  TempList := TStringList.Create; { Listenobjekt erzeugen }
  try   { Stringliste verwenden }
  finally   TempList.Free; { Listenobjekt freigeben }
  end;
end;
Warum wird die Deklaration nicht direkt mit TStringList durchgeführt?

In der Delhi-Hilfe der Version 7, unter dem Beispiel für die Methoden Add, AddStrings, Find
Wird die String-Liste mit:

Delphi-Quellcode:
Var MyList: TStringList // deklariert.
Wie soll nun die String-Liste deklariert werden?
Welche Vor- und Nachteile können sich daraus ergeben?

Bis bald Chemiker

semo 9. Jun 2007 09:53

Re: Unterschied zwischen TStrings und TStringList Deklaratio
 
TStringList ist eine Erweiterung von TStrings meines Wissens nach.
Man sollte bei der Deklaration
Delphi-Quellcode:
Var MyList: TStringList // deklariert.
verwenden

Meflin 9. Jun 2007 09:59

Re: Unterschied zwischen TStrings und TStringList Deklaratio
 
Um mal aus der Hilfe zu zitieren ;)
Zitat:

TStrings enthalten abstrakte bzw. rein virtuelle (C++ Terminologie) Methoden und sollten nicht direkt instantiiert werden.
Oder anders gesagt: die Hälfte der Methoden von TStrings ist noch garnicht implementiert ;)


marabu 9. Jun 2007 10:06

Re: Unterschied zwischen TStrings und TStringList Deklaratio
 
Hallo,

wenn ich eine Variable vereinbare, dann verwende ich immer diejenige Vorgänger-Klasse, deren Eigenschaften und Methoden für meine Zwecke ausreichen. Dadurch erhöhe ich die Wiederverwendbarkeit des Codes beträchtlich. Bei einer StringList gilt es zu prüfen, ob die neu eingeführten Methoden und Eigenschaften bzgl. der Sortierfähigkeit im Vordergrund der Anwendung stehen. In diesem Fall würde ich auch die Variable mit dem Typ TStringList vereinbaren, aber nur für den Kontext in welchem diese Eigenschaften benötigt werden. Bei der Übergabe an eine Funktion, die keinen Gebrauch von diesen Eigenschaften macht, würde ich dann wieder mit TStrings arbeiten. Die Vorgehensweise gilt für alle Klassen und ist eine direkte Umsetzung des Information Hiding Prinzips.

Grüße vom marabu

Chemiker 9. Jun 2007 11:16

Re: Unterschied zwischen TStrings und TStringList Deklaratio
 
Hallo,

danke für die schnelle Antwort.

Was ich feststellen muss, dass die Meinungen bezüglich der Deklaration von StringList da etwas auseinander gehen.

Was marabu geschrieben hat ist aber sehr interessant, weil ich so bisher nicht vorgegangen bin.
Das liegt aber wohl an meinen Programmierstil, wenn ich anfange weis ich nicht immer so im Detail was letztlich am Ende rauskommt. Während des Schreibens kommen Ideen die ich dann versuche auch noch umzusetzen.
Ich versuche mal das Ganze in einem Satz zusammenzufassen:
So viel wie nötig, so wenig wie möglich

Bis bald Chemiker


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