Hacer la vida más fácil con TObjectList
Nuevo en Delphi 5 & 6 es el TObjectList. Como su nombre implica que es capaz de almacenar una lista de los objetos!
Recientemente, yo estaba obligado a presentar una aplicación de ejemplo para un trabajo que estaba realizando. Una cosa esta aplicación ¿se permite al usuario colocar 'las casillas de Comentarios' en una imagen. Estos requisitos de la TObjectList clase de un candidato perfecto!
Considerar esta modificación del procedimiento:
procedimiento TMainForm.AddString
var
& nbsp & nbsp MyStringList: TStringList
begin
& nbsp & nbsp MyStringList := TStringList.Crear
& nbsp & nbsp probar
& nbsp & nbsp & nbsp & nbsp MyStringList.Add('bla')
& nbsp & nbsp & nbsp & nbsp MyStringList.Add('blah2')
& nbsp & nbsp excepto
& nbsp & nbsp & nbsp & nbsp FreeAndNil(MyStringList)
& nbsp & nbsp final
fin
Este procedimiento, obviamente, presenta una muy grave pérdida de memoria! El uso de la TObjectList nos puede ahorrar el dolor de cabeza de utilizar un estándar de TList a causa de una maravillosa propiedad/parámetro llamado 'OwnsObjects'.
Considerar nuestro modificación del procedimiento:
Vamos a comenzar por la creación de la TObjectList cuando se crea el formulario.
procedimiento TMainForm.FormCreate(Sender: TObject)
begin
& nbsp & nbsp Flista := TObjectList.Crear(True) // OwnsObjects es Cierto.
fin
procedimiento TMainForm.AddString
var
& nbsp & nbsp MyStringList: TStringList
begin
& nbsp & nbsp MyStringList := TStringList.Crear
& nbsp & nbsp probar
& nbsp & nbsp & nbsp & nbsp MyStringList.Add('bla')
& nbsp & nbsp & nbsp & nbsp MyStringList.Add('blah2')
& nbsp & nbsp & nbsp & nbsp Flista.Agregar(MyStringList)
& nbsp & nbsp excepto
& nbsp & nbsp & nbsp & nbsp FreeAndNil(MyStringList)
& nbsp & nbsp final
fin
Ahora ya no tiene que preocuparse de la pérdida de memoria debido a que cuando el formulario principal es destruida, tenemos el siguiente código:
procedimiento TMainForm.FormDestroy(Sender: TObject)
begin
& nbsp & nbsp Flista.Libre
fin
TObjectList le permite agregar un objeto de cualquier tipo que significa que se requiere para ser genérico. Echemos un vistazo a la .Método Add de la TObjectList sí mismo:
función TObjectList.Agregar(AObject: TObject): Integer
begin
& nbsp & nbsp Resultado := heredado Agregar(AObject)
fin
Observe el tipo de parámetro es TObject y como todo buen programador Delphi debe saber TObject es el absoluto punto de partida de cualquier clase en el Delphi VCL. Por haveing un parámetro de TObject puede pasar cualquier cosa en la lista!!
No es una desventaja, sin embargo. Hacer referencia al elemento en la lista sólo ofrece un 'TObject'. Para la dirección de un elemento en la lista de algún tipo de fundición es necesario. Tal vez tenemos que encontrar la cadena en la lista con el texto que contiene: 'blah'. Obviamente TObject no tiene una propiedad de Texto, por lo que tendremos que hacer algunos typecasting.
procedimiento FindText
var
& nbsp & nbsp i: Integer
begin
& nbsp & nbsp for i := 0 a Flista.Count - 1 do
& nbsp & nbsp si TStringList(Flista.Los elementos[i])[0] = 'bla', a continuación,
& nbsp & nbsp & nbsp & nbsp si TStringList(Flista.Los elementos[i]).Texto = 'bla', a continuación,
& nbsp & nbsp & nbsp & nbsp & nbsp & nbsp ShowMessage(TStringList(Flista.Los elementos[i]).De texto)
& nbsp & nbsp final
fin
la Adición de más de un tipo de clase a la misma ObjectList también es una posibilidad! Usted puede llamar a la TObjectLists método titulado: FindInstanceOf.
Aquí la maravillosa herramienta llamada 'Clase de Referencia' viene muy bien. Pasar en la referencia a su tipo de clase y FindInstanceOf devolverá el valor de índice de la lista se encuentra el elemento:
& nbsp & nbsp Flista.FindInstanceOf(TStringList, True, 0)
Esto concluye la FindObject lección y espero que usted vea su valor y espero que este artículo fue de ayuda!
Eric 'DelphiDev' Brown
El uso de tobjectlist
El uso de tobjectlist : Multi-millones de consejos para hacer su vida mas facil.
Hacer la vida mas facil con TObjectList
Nuevo en Delphi 5 & 6 es el TObjectList. Como su nombre implica que es capaz de almacenar una lista de los objetos!
Recientemente, yo estaba obligado a presentar una aplicacion de ejemplo para un trabajo que estaba realizando. Una cosa esta aplicacion ¿se permite al usuario colocar 'las casillas de Comentarios' en una imagen. Estos requisitos de la TObjectList clase de un candidato perfecto!
Considerar esta modificacion del procedimiento:
procedimiento TMainForm.AddString
var
& nbsp & nbsp MyStringList: TStringList
begin
& nbsp & nbsp MyStringList := TStringList.Crear
& nbsp & nbsp probar
& nbsp & nbsp & nbsp & nbsp MyStringList.Add('bla')
& nbsp & nbsp & nbsp & nbsp MyStringList.Add('blah2')
& nbsp & nbsp excepto
& nbsp & nbsp & nbsp & nbsp FreeAndNil(MyStringList)
& nbsp & nbsp final
fin
Este procedimiento, obviamente, presenta una muy grave perdida de memoria! El uso de la TObjectList nos puede ahorrar el dolor de cabeza de utilizar un estandar de TList a causa de una maravillosa propiedad/parametro llamado 'OwnsObjects'.
Considerar nuestro modificacion del procedimiento:
Vamos a comenzar por la creacion de la TObjectList cuando se crea el formulario.
procedimiento TMainForm.FormCreate(Sender: TObject)
begin
& nbsp & nbsp Flista := TObjectList.Crear(True) // OwnsObjects es Cierto.
fin
procedimiento TMainForm.AddString
var
& nbsp & nbsp MyStringList: TStringList
begin
& nbsp & nbsp MyStringList := TStringList.Crear
& nbsp & nbsp probar
& nbsp & nbsp & nbsp & nbsp MyStringList.Add('bla')
& nbsp & nbsp & nbsp & nbsp MyStringList.Add('blah2')
& nbsp & nbsp & nbsp & nbsp Flista.Agregar(MyStringList)
& nbsp & nbsp excepto
& nbsp & nbsp & nbsp & nbsp FreeAndNil(MyStringList)
& nbsp & nbsp final
fin
Ahora ya no tiene que preocuparse de la perdida de memoria debido a que cuando el formulario principal es destruida, tenemos el siguiente codigo:
procedimiento TMainForm.FormDestroy(Sender: TObject)
begin
& nbsp & nbsp Flista.Libre
fin
TObjectList le permite agregar un objeto de cualquier tipo que significa que se requiere para ser generico. Echemos un vistazo a la .Metodo Add de la TObjectList si mismo:
funcion TObjectList.Agregar(AObject: TObject): Integer
begin
& nbsp & nbsp Resultado := heredado Agregar(AObject)
fin
Observe el tipo de parametro es TObject y como todo buen programador Delphi debe saber TObject es el absoluto punto de partida de cualquier clase en el Delphi VCL. Por haveing un parametro de TObject puede pasar cualquier cosa en la lista!!
No es una desventaja, sin embargo. Hacer referencia al elemento en la lista solo ofrece un 'TObject'. Para la direccion de un elemento en la lista de algun tipo de fundicion es necesario. Tal vez tenemos que encontrar la cadena en la lista con el texto que contiene: 'blah'. Obviamente TObject no tiene una propiedad de Texto, por lo que tendremos que hacer algunos typecasting.
procedimiento FindText
var
& nbsp & nbsp i: Integer
begin
& nbsp & nbsp for i := 0 a Flista.Count - 1 do
& nbsp & nbsp si TStringList(Flista.Los elementos[i])[0] = 'bla', a continuacion,
& nbsp & nbsp & nbsp & nbsp si TStringList(Flista.Los elementos[i]).Texto = 'bla', a continuacion,
& nbsp & nbsp & nbsp & nbsp & nbsp & nbsp ShowMessage(TStringList(Flista.Los elementos[i]).De texto)
& nbsp & nbsp final
fin
la Adicion de mas de un tipo de clase a la misma ObjectList tambien es una posibilidad! Usted puede llamar a la TObjectLists metodo titulado: FindInstanceOf.
Aqui la maravillosa herramienta llamada 'Clase de Referencia' viene muy bien. Pasar en la referencia a su tipo de clase y FindInstanceOf devolvera el valor de indice de la lista se encuentra el elemento:
& nbsp & nbsp Flista.FindInstanceOf(TStringList, True, 0)
Esto concluye la FindObject leccion y espero que usted vea su valor y espero que este articulo fue de ayuda!
Eric 'DelphiDev' Brown