Einzelnen Beitrag anzeigen

Perlsau
(Gast)

n/a Beiträge
 
#12

AW: TStringList erzeugt access violation...

  Alt 20. Nov 2013, 15:03
Meines Kenntnisstandes nach sollte man bei der Deklaration von Stringlisten statt SendeListe : TStringList; besser SendeListe : TStrings; schreiben. Weshalb?

TStrings ist lediglich die "Schnittstellenklasse" für eine Stringliste. Simon meint: "TStrings is a lesser 'contract' allowing greater flexibility for the developer. You can interact with any class that implements the TStrings abstract class." Auf deutsch: Mit der Deklaration als TStrings statt TStringList ist man flexibler, weil man so mit jeder von TStrings abgeleiteten Klasse interagieren kann. Deshalb sind auch die Stringlisten in Memos und Listboxen als TStrings deklariert, wobei intern natürlich eine abgeleitete Klasse arbeitet. Auf diese Weise kann man überhaupt erst die Stringliste einer Listbox, deren interner Abkömmling über zusätzliche Properties verfügt, einer selbsterzeugten Liste oder dem Abkömmling Memo.Lines zuweisen: TStrings sind immer mit ihren Abkömmlingen kompatibel. Oder wie es David Heffernan ausdrückt:

"However, if you had code that assigned a variety of different types of TStrings descendants to the variable, then it would make sense to declare it as TStrings."
  Mit Zitat antworten Zitat