delphi tstringlist memo

delphi - ¿Por qué memo.Lines usa TStrings en lugar de TStringList?



(1)

TMemo.Lines , TListBox.Items , TComboBox.Items , etc .; Todos son declarados como TStrings . ¡Cuidado, hablando de la propiedad que es! Los tipos creados internamente son TMemoStrings , TListBoxStrings y TComboBoxStrings respectivamente, que son todos descendientes de TStrings y difieren en el almacenamiento.

¿Y por qué? Para intercambiabilidad e interoperabilidad. Por lo tanto, cada TStrings tiene las mismas propiedades, por lo que puede hacer:

Memo1.Lines := ListBox1.Items;

¿Cómo utilizar? Bueno, una propiedad de TMemo.Lines como TMemo.Lines funciona bien. Puede agregar, eliminar, cambiar, renovar y borrar las cadenas (y objetos) en la propiedad, ya que internamente es un TMemoStrings que implementa toda esta interacción. Declaración <> implementación.

Pero cuando desea un manejo especial, por ejemplo, como la clasificación que proporciona TStringList , necesita ayuda. No puede realizar una TMemo.Lines a TMemo.Lines ni convertir un TMemo.Lines en un TStringList , porque no es uno, sino que necesita crear un objeto intermedio para este procesamiento especial:

var Temp: TStringList; begin Temp := TStringList.Create; try Temp.Assign(Memo1.Lines); Temp.Sort; Memo1.Lines.Assign(Temp); finally Temp.Free; end; end;

¿Por qué Memo.Lines utiliza la clase abstracta TStrings ? ¿Por qué no usa TStringList lugar?

¿Y debo convertirlo a TStringList antes de trabajar con él?