quarta-feira, 18 de julho de 2007

CharacterArray e OrderedCollection: Caracteres e coleções

Manipular cadeias de caracteres com a utilização de objetos é uma tarefa fácil e agradável. Construir coleções de objetos pode facilitar ainda mais o desenvolvimento de procedimentos dentro dos aplicativos. Para isso, só precisamos conhecer um pouco das classes CharacterArray e OrderedCollection, do NetExpress.

A classe CharacterArray cria objetos contendo cadeias de caracteres. A manipulação desses objetos pode ser feita através de métodos bem fáceis de usar. Muitas classes necessitam de objetos desse tipo, como parâmetros a serem passados para os métodos. Por isso, é uma classe que considero de suma importância para quem quer utilizar a OOP.

A classe OrderedCollection cria objetos que podem conter outros objetos dentro deles. A classe OrderedCollection utiliza métodos que buscam qualquer um desses objetos da coleção através de índices. Você pode também buscar objetos dentro das coleções através de métodos de procura.

Os exemplos abaixo consideram que as classes CharacterArray e OrderedCollection estão declaradas na class-control:

class-control.
....CharacterArray is class "chararry"
....OrderedCollection is class "ordrdcll"
.....

Declare também as seguintes variáveis na working-storage section:

working-storage section.
77 umaColecao object reference value null.
77 umaString object reference value null.
77 umaNovaString object reference value null.
77 s pic 9(09) comp-5 value zeros.
77 i pic 9(09) comp-5 value zeros.
77 wsTexto pic x(255) value spaces.



Criando objetos do tipo CharacterArray. Esse é o método que eu mais utilizo em minhas aplicações:

invoke CharacterArray "withValue" using z"Ciasoft
"
returning umaString



Para concatenar outra string, ao final do objeto:

invoke umaString "concatZ" using z" Online"
returning umaNovaString



Para retornar o conteúdo do objeto:

invoke umaNovaString "getValue" returning wsTexto



Para retornar o conteúdo do objeto, terminando com nulo:

invoke umaNovaString "getValueZ" returning wsTexto



Para converter o conteúdo do objeto em letras maiúsculas:

invoke umaString "asUppercase" returning umaNovaString



Para converter o conteúdo do objeto em letras minúsculas:

invoke umaString "asLowercase" returning umaNovaString



Para finalizar os objetos:

invoke umaString "finalize" returning umaString
invoke umaNovaString "finalize" returning umaNovaString



Esses são apenas alguns métodos que utilizo em minhas aplicações. Experimente utilizar outros métodos dessa classe. Obtenha mais informações sobre todos os métodos da classe CharacterArray no manual online da Microfocus.




Criando coleções. Para criar um objeto da classe OrderedCollection,utilize o seguinte método:

move 0 to s
invoke OrderedCollection "ofReferences" using s
returning umaColecao



Para adicionar objetos na coleção:

invoke umaColecao "add" using umaString
invoke umaColecao "add" using umaNovaString



Para saber quantos objetos existem na coleção:

invoke umaColecao "size" returning s



Para buscar o objeto em uma determinada posição:

move 2 to i
invoke umaColecao "at" using i returning umaString



Para remover um objeto da coleção, em uma determinada posição:

move 2 to i
invoke umaColecao "removeAtIndex" using i returning umaString



Para finalizar a coleção e todos os objetos dentro dela:

invoke umaColecao "deepFinalize" returning umaColecao



Muitos outros métodos podem ser utilizados com coleções. No manual online da Microfocus, você pode experimentar utilizá-los.

Uma aplicação prática para o uso dessas classes, por exemplo, é ler uma certa quantidade de registros de um arquivo, criar um objeto do tipo CharacterArray para cada um desses registros lidos e adicioná-los, um a um, em um objeto do tipo OrderedCollection. Com isso, você pode ter uma coleção de registros dentro de um único objeto, podendo passá-lo como parâmetro, por exemplo, para um programa de relatório que vai imprimir os registros. Mas essa é só uma idéia, dentre tantas outras que você pode criar, de acordo com a sua necessidade.

2 comentários:

laci disse...

ola, gostei muito do seu blog
vou partipar de vez em quando
gostaria de uma ajuda
para trocar uma propriedade de um object em tempo real
object seletion bok
ele esta setado como drop down list
gostaria de passar para simple
e depois volta o original
podes me ajudar
marco. agradeco desde ja

Alexandre Cortez. disse...

olá, Marco...

obrigado pela visita ao blog.. sua participação sempre será bem-vinda, ok ?

bem, em relação à sua dúvida, acredito que vc utilize o Dialog System para fazer suas telas. Quando vc coloca um SelectionBox (SB) em uma GS, tem que deixar especificado nas propriedades desse componente qual o tipo de SB que será utilizado, Simple, DropDown ou DropDownList. Alguns componentes do Windows requerem que sejam configurados antes mesmo de serem criados em uma window. Outros, permitem que algumas características visuais e comportamentos possam ser alterados em tempo de execução. Não tenho certeza em que categoria se encaixa o SB. Mas vc pode fazer um teste. Primeiro, vc terá que pegar o SB da sua GS como um objeto dentro do seu programa. Procure aqui no blog um artigo chamado "Capturando objetos na GS", para ter uma idéia do que estou falando. Com o objeto em mãos, vc pode testar os métodos "dropDown", "dropList" e "poplist" e "simple". Esses são os métodos que mudam o comportamento de um SB. Veja o exemplo:

invoke umSelectionBox "dropDown"

Se vc já possui conhecimento de programação orientada ao objeto, então não será uma tarefa das mais difíceis para você. Caso não conheça muito do assunto, seria interessante procurar material disponível na internet ou continuar acompanhando os artigos que escrevo aqui no blog.

Espero ter ajudado. Abraços.