Creio que uma das classes mais versateis do Delphi é a TStringList. Como uma postagem sobre esta classe seria muito extensa, dividi em partes o assunto.
Nesta séries de postagens pretendo explorar alguns recursos que não são muito conhecidos sobre essa classe.
AddObject
Esta propriedade é particularmente útil quando queremos associar um objeto a uma string.
Ex:
var Lista: TStringList; begin Lista:= TStringList.Create; try Lista.AddObject('FormulárioPrincipal', frmPrincipal); finally Lista.Free; end; end;Obviamente, como este é o único item na lista, então o index dessa operação será 0.
Para referenciarmos a string nesta posição, podemos usar a seguinte linha:
ShowMessage(Lista.Strings[0]);
E para referenciasmo o obejto nesta mesma posição fazemos assim:
(Lista.Objects[0] as TForm).Show;
Note que como a Lista não guarda o tipo de objeto, portanto é necessário realizarmos o typecast para TForm, claro, isso porque sabemos que o objeto na lista é um TForm (Este problema pode muito bem ser resolvido por Generis, mas isso fica para outro post).
Muito cuidado ao utilizar typecast de objetos, pois como sabemos é muito facil gerar um "Acess Violention" nesta operação!!
Outro cuidado que devemos tomar ao utilizar um StringList para armazenar objetos é lembrar que, caso estejamos trabalhando com uma lista ordenada (TStringList.Sorted:= True) e não permitirmos duplicidade (TStringList.Duplicates:= dupError;) adicionar o mesmo objetos mais de uma vez na lista ira gerar uma exceção do tipo 'EListError'.
Mais uma consideração que devemos ter quando utilizamos listas de objetos com o TStringList é a propriedade 'TStringList.OwnsObjects'.
Esta propriedade, quando setada para True indica ao Delphi que o dono dos obejtos na lista é o TStringList, e quando liberarmos o TStringList com Free, o delphi também executara o Free de todos os obejtos na lista.
Isso pode ser ótimo ou não dependendo do contexto da sua rotina.
Abraços a todos e até a próxima postagem.
Nenhum comentário:
Postar um comentário