sexta-feira, 23 de abril de 2021

DICAS 3313 - WINDEV WEBDEV MOBILE - Array Associativa - Associative array - Curso Array 20





https://youtu.be/V644jdGbmms




Bom Dia Boa Tarde Boa Noite

Mande um email pedido para receber todas notificaçoes dos videos 


Seja Membro do Canal

Esse Video vai estrear as  do dia 23/04/2021 

DICAS 3313 - WINDEV WEBDEV MOBILE - Array Associativa - Associative array - Curso Array 20



Assunto :


Array Associativa - Associative array
Vamos criar uma window - array
craindo um botao para utilitar os array 
Fazendo o codigo Array associativas 
Percorrendo a array criada e mostrando codigo e nome 
Lendo por codigo do cliente o array 
Vamos agora criar a tabela e alimentar com esse array 

---------------------   Codigo

// Criando array associative clientes


aa_array_clientes is associative array of string 
// Adicionando os clientes, poderia ser uma tabela
aa_array_clientes["1"] = "amarildo"
aa_array_clientes["3"] = "matos"
aa_array_clientes["5"] = "Cliente homologacao"
// lendo cada elemento dentro do array e mostrando ele
TABLE_clientes.DeleteAll()
FOR EACH ELEMENT sCodigo,sNome OF aa_array_clientes

    TABLE_clientes.AddLine(sCodigo,sNome)
END
// lendo o array pelo codigo do cliente e trazendo o nome o nome e mostrando
sTeste is string=aa_array_clientes["1"]
Info("Nome do cliente é :"+sTeste)
sTeste=aa_array_clientes["5"]
Info("Nome do cliente é :"+sTeste)


------------------ INDICE DO CURSO DE ARRAY e ESTRUTURA


WinDev - Array - 001/... Adiciona/Classifica Ordem/Mostra
WinDev - Array - 002/... Quantas Ocorrencias Array
WinDev - Array - 003/... ArrayDeleteLine - Eliminha uma Linha do Array
WinDev - Array - 004/... ArrayToString - Leva Array Para String
WinDev - Array - 005/... Seek - Procura Por Valor
WinDev - Array - 006/... ArrayDeleteDuplicate - Elimina itens duplos
WinDev - Array - 007/... Delete - Elimina Uma Linha
WinDev - Array - 008/... DeleteAll - Limpa Array
WinDev - Array - 009/... SwapLine - Mover de Lugar
WinDev - Array - 010/... Sum - Somar Array
ARRAYREVERSE - ARRAY - 011/ ... AULA 1185 
ARRAY INICIO - ARRAY 012 / AULA 1229

----------------------------------


PlayList WebDev tutorial Amarildo Webdev
Playlist Windev Tutorial Amarildo Windev
PlayList Windev Mobile 
Amarildo
Donwloads Windev
Windev
WxSolucoes
Matos Informatica
Repositorio Windev
Inscricao Evento Pcsof
Site forum Google 
Video sobre 3 Mil Videos Windev 
Video sobre Alfaserver servidor 












Associative array (Type of variable
Em francês: Tableau associatif (Type de variable)
Um array associativo é um tipo "avançado" de array: é usado para agrupar um conjunto de elementos do mesmo tipo. Cada elemento do array é indexado em qualquer tipo de informação (e não apenas em um índice numérico como nos outros tipos de arrays).
Observação : Este tipo de array permite que você acesse rapidamente qualquer elemento, com algumas opções nas strings.
Exemplo
// Preenche uma matriz associativa com os tamanhos de ficheiros
aaFileSize is associative array of int
aaFileSize["File1.txt"] = fSize("File1.txt")
aaFileSize["File2.txt"] = fSize("File2.txt")
 
// Recupera o tamanho de um arquivo
Trace(aaFileSize["File2.txt"])
 
// Procura os tamanhos dos arquivos
sFile is string
nSize is int
FOR EACH ELEMENT nSize,sFile OF aaFileSize
Trace(StringBuild("%1: %2"sFilenSize))
END


Sintaxe

Declarando uma matriz associativaEsconda os detalhes

<Array name> is associative array [(<Options> [, <Default value> [, <Key type> [, <Initial size>]]])] of <Type>
<Nome da matriz>:
Nome da variável de matriz a ser declarada.
<Opções>:
Combinação de constantes usadas para configurar o modo operacional da matriz:
WithDuplicatesEsta constante é usada para permitir duplicatas. Por padrão, uma matriz associativa não pode conter duplicatas.
ccIgnoreAccentSe o tipo de chave for uma string (por padrão), a indexação ignora os caracteres acentuados.
WEBDEV - Código do navegador Esta constante não está disponível.
ccIgnoreCaseSe o tipo de chave for uma string (por padrão), a indexação não diferencia maiúsculas de minúsculas.
ccIgnoreSpaceSe o tipo de chave for uma string (por padrão), a indexação ignora os caracteres de espaço.
ccIgnorePunctuationAndSpaceSe o tipo de chave for uma string (por padrão), a indexação não é sensível à pontuação e ignora os caracteres de espaço.
WEBDEV - Código do navegador Esta constante não está disponível.
WithoutDuplicates (padrão)Por padrão, uma matriz associativa não pode conter duplicatas.
Você tem a capacidade de não especificar essa constante.
O valor "*" permite que você mantenha o valor padrão da opção.
<Valor padrão>:
Valor retornado ao acessar um elemento não existente em uma matriz associativa sem duplicata. Este parâmetro é ignorado em uma matriz associativa com duplicatas. O valor padrão definido para o tipo da matriz é usado por padrão (0, "", False).
O valor "*" é usado para manter o valor padrão do tipo.
<Tipo de chave>:
Tipo da chave usada para navegar na matriz. Por padrão, a operação de navegação é realizada em uma chave de string. Os tipos autorizados são os seguintes:
wlStringCadeia de caracteres
wlUnicodeStringSeqüência de caracteres Unicode
wlDateData
wlDateTimeData hora
wlIntInteiro assinado de 4 bytes
wlInt_8Inteiro assinado de 8 bytes
wlUnsignedInt_4Inteiro de 4 bytes sem sinal
wlUnsignedInt_8Inteiro de 8 bytes sem sinal
wlTimeTempo
wlCurrencyMoeda
wlNumericNumérico
wlReal8 bytes reais
O valor "*" é usado para manter o tipo de chave padrão (string).
WEBDEV - Código do navegador Este parâmetro não está disponível.
<Tamanho inicial>:
Inteiro. Corresponde ao tamanho inicial da zona de memória para a matriz associativa.
A adição em uma matriz associativa pode ser muito longa se a matriz for redimensionada. No caso de múltiplas adições, recomendamos que você superdimensione a matriz para otimizar as adições.
O valor "*" permite que você mantenha o tamanho padrão.
WEBDEV - Código do navegador Este parâmetro não está disponível.
<Tipo>:
Tipo dos elementos encontrados na matriz.
WINDEVWEBDEV - Código do servidorjanelasLinuxiPhone / iPadApple WatchAplicativo universal do Windows 10Windows Mobile Observação: Os elementos que compõem o array também podem ser arrays, arrays fixos, arrays associativos, filas, pilhas ou listas.

Declaração de um parâmetro de matriz associativaEsconda os detalhes

<Parameter name> is associative array of <Type>
<Nome do parâmetro>:
Nome da variável de matriz a ser declarada.
<Tipo>:
Tipo dos elementos encontrados na matriz.
WINDEVWEBDEV - Código do servidorjanelasLinuxiPhone / iPadApple WatchAplicativo universal do Windows 10Windows Mobile Observação: Os elementos que compõem o array também podem ser arrays, arrays fixos, arrays associativos, filas, pilhas ou listas.
Observações

Acessando as matrizes associativas

As seguintes propriedades podem ser usadas para lidar com uma matriz associativa:
Count
Retorna o número de ocorrências na matriz.
EmptyUsado para descobrir se o array está vazio ou não.
As sintaxes como & Array e Array1 = Array2 não são permitidas. Matrizes associativas não permitem operadores de referência ou cópia.

Acessando os elementos das matrizes associativas

O acesso aos elementos encontrados em uma matriz associativa difere dependendo se a matriz associativa aceita duplicatas ou não.
Matriz associativa sem duplicata
Exist
MonTable [MyKey].Exists

Retorna True se o elemento MyKey existe, False caso contrário.
AndroidAndroid Widget Propriedade não disponível.
Empty
MonTableau [MyKey].Void

Retorna True se o elemento MyKey não existe, caso contrário False .
Count
MyArray [MyKey]. Occurrence

Retorna 1 se o elemento MyKey existir, 0 se o elemento não existir.
Assignment of element
MyArray[MyKey] = <Value>

Se o elemento MyKey não existir, um elemento MyKey será criado e designado com <Value>.
Se o elemento MyKey existir, seu valor será modificado.
MyArray[MyKey, Subscript] = Value

Um erro WLanguage ocorre se o subscrito for diferente de 1.
Um erro WLanguage ocorre se o elemento MyKey não existir.
Se o elemento MyKey existir, seu valor será modificado.

Sintaxe compatível com as matrizes associativas com duplicatas.
MyArray[MyKey]++

Cria a entrada na matriz associativa, com o valor padrão especificado ao declarar a matriz.
Access to element
MyArray[MyKey]

Se o elemento MyKey não existir, retorna o valor padrão da matriz.
Se o elemento MyKey existir, retorna o valor do elemento.
MyArray[MyKey, Subscript]

Um erro WLanguage ocorre se o subscrito for diferente de 1.
Um erro WLanguage ocorre se o elemento MyKey não existir.
Se o elemento MyKey existir, retorna o valor do elemento.

Sintaxe compatível com as matrizes associativas com duplicatas.
Address of element
&MyArray[MyKey]

Um erro WLanguage ocorre se o elemento MyKey não existir.
Se o elemento MyKey existir, retorna o endereço do elemento.
WEBDEV - Código do navegador Esta sintaxe não está disponível.
&MyArray[MyKey, Subscript]

Um erro WLanguage ocorre se o subscrito for diferente de 1.
Um erro WLanguage ocorre se o elemento MyKey não existir.
Se o elemento MyKey existir, retorna o endereço do elemento.

Sintaxe compatível com as matrizes associativas com duplicatas.
WEBDEV - Código do navegador Esta sintaxe não está disponível.
Matriz associativa com duplicatas
Exist
MonTable [MyKey].Exists

Retorna True se pelo menos um elemento MyKey existir, False se o elemento MyKey não existir.
AndroidAndroid Widget Propriedade não disponível.
Checking the existence of a key: Empty
MonTableau [MyKey].Void

Retorna True se o elemento MyKey não existir, False se houver pelo menos um elemento MyKey.
Number of elements found in a key: Property Count
MyArray [MyKey]. Occurrence

Retorna o número de elementos MyKey.
Assignment of element
MyArray[MyKey] = <Value>

Cria um elemento MyKey e atribui o valor especificado a este elemento (mesmo se os elementos MyKey já existirem).
MyArray[MyKey, Subscript] = Value

Um erro WLanguage ocorre se o subscrito for maior que o número de elementos existentes.
Um erro WLanguage ocorre se o elemento MyKey não existir.
Se o elemento MyKey existir, o valor do elemento identificado por seu subscrito será modificado.
Access to element
MyArray[MyKey]

Sintaxe inválida que dispara um erro WLanguage (porque vários elementos podem corresponder à mesma chave).
MyArray [MyKey, Subscript]

Um erro WLanguage ocorre se o subscrito for maior que o número de elementos existentes.
Um erro WLanguage ocorre se o elemento MyKey não existir.
Se o elemento MyKey existir, retorna o valor do elemento identificado por seu subscrito.
Endereço do elemento
& MyArray [MyKey]

Sintaxe não permitida
MyArray[MyKey, Subscript]

Um erro WLanguage ocorre se o subscrito for maior que o número de elementos existentes.
Um erro WLanguage ocorre se o elemento MyKey não existir.
Se o elemento MyKey existir, retorna o endereço do elemento identificado por seu subscrito.
WEBDEV - Código do navegador Esta sintaxe não está disponível.

Você tem a capacidade de usar a atribuição múltipla para as matrizes associativas.

Como inicializar um array associativo assim que ele for declarado?

Para inicializar uma matriz associativa assim que ela for declarada, tudo o que você precisa fazer é adicionar os pares "chave / valor" usando o operador [] (colchetes). A sintaxe é a seguinte:
aaMyArray is associative array of xxx = ...
[ [<key1>, <value1>], [<key2>, <value2>], ... ]

Por exemplo:
// Armazena as taxas de IVA por nome
aaVATRate is associative array of real = ...
[["Normal"0.2], ["Intermediate"0.1], ["Low"0.055]]

Navegando nas matrizes associativas

Os elementos de uma matriz associativa podem ser navegados usando a sintaxe FOR EACH específica para as matrizes associativas .

Funções e matrizes WLanguage

Várias funções WLanguage podem ser usadas para lidar com as matrizes associativas. Consulte Funções para gerenciar matrizes para obter mais detalhes.
Isso permite que você excluir um elemento de uma matriz associativa usando Exclui (ou ArrayDelete ) através da seguinte sintaxe:
Delete(ArrayName, key)
ArrayDelete(ArrayName,Key)

Parâmetros de matriz associativa

  • O tipo de elemento encontrado na matriz associativa passada no parâmetro deve ser igual ao tipo de declaração.
  • Uma matriz associativa não pode ser passada por valor. Uma variável deve necessariamente ser passada em parâmetro.
    Exemplo:
    // Adiciona um cliente ao array
    PROCEDURE AddCustomer(aaCustomer is associative array of CCustomer,
    sName is string,
    sInfo is string)
    // Builds the new customer object
    c is CCustomer(sNamesInfo)
    // Adds the new object into the array
    aaCustomer[sName] = c






  • Nenhuma verificação é realizada durante a compilação: as verificações são realizadas no tempo de execução.
  • Matrizes associativas não permitem operadores de referência ou cópia.

Matriz associativa de classes ou estruturas

Se você estiver usando uma matriz associativa de classes ou estruturas, as diferentes instâncias são copiadas automaticamente durante as adições.
Se você estiver usando um array associativo de classes dinâmicas ou estruturas dinâmicas , as classes ou estruturas devem ser alocadas durante a adição (as operações de liberação são executadas automaticamente).
Exemplos:
// Caso de uma matriz de objetos não dinâmicos
// Objeto
cl Obj is cLMyClass
// Matriz associativa de objetos
aaAssociative is associative array of cLMyClass
// Assign one of the object members
clObj:nMember = 0
// Add into the associative array.
// It is an array of non-dynamic objects, therefore the object is copied
// The assignment can be quite "long" if there are a lot of members
aaAssociative["Association"] = clObj
// Change in the initial object
clObj:nMember = 2
// The object was copied, therefore 0 is found in the array
// (value during the assignment)
Info(aaAssociative["Association"]:nMember)
// Caso de uma matriz de objetos dinâmicos
// Objeto dinâmico
pcl Obj is dynamic cLMyClass
// Matriz associativa de objetos dinâmicos
aaAssociative is associative array of dynamic cLMyClass
// Allocate a dynamic object
pclObj = new cLMyClass
// Assign one of the object members
pclObj:nMember = 0
// Add into the associative array.
// It is an array of dynamic objects.
// Therefore, it is a new "pointer" to the same object (fast assignment)
aaAssociative["Association"] = pclObj
// Change in the initial object
pclObj:nMember = 2
// The array contains the same object therefore 2 in the array as well
Info(aaAssociative["Association"]:nMember)
Acessar os membros de um elemento não existente em uma matriz associativa de estruturas ou classes não cria automaticamente a instância da estrutura ou classe.
A linha de código:
MyAssociativeArray["Key"]:Member = 5
falha se o elemento "Chave" não foi criado de antemão.
WINDEVWEBDEV - Código do servidorjanelasLinuxiPhone / iPadApple WatchAplicativo universal do Windows 10Windows Mobile 

Matriz associativa de matrizes, fila, pilha, lista

As seguintes sintaxes são suportadas:
<variable> is associative array of arrays of int
<variable> is associative array (withDuplicates) of arrays of int
<variable> is associative array (withDuplicates,wlInt) of arrays of int
<variable> is associative array of arrays of 5 int
<variable> is associative array (withDuplicates) of arrays of 5 int
<variable> is associative array (withDuplicates,wlInt) of arrays of 5 integers

<variable> is associative array of fixed arrays of 5 int
<variable> is associative array (withDuplicates) of  fixed arrays of 5 int
<variable> is associative array (withDuplicates,wlInt) of fixed arrays of 5 int
<variable> is associative array of associative arrays of int
<variable> is associative array (withDuplicates) of associative arrays of int
<variable> is associative array (withDuplicates,wlInt) of associative arrays of int

<variable> is associative array of associative arrays (withDuplicates) of int
<variable> is associative array (withDuplicates) of associative arrays ...
(withDuplicates) of int
<variable> is associative array (withDuplicates,wlInt) of associative arrays ...
(withDuplicates) of int
<variable> is associative array of associative arrays ...
(withDuplicates,wlInt) of int
<variable> is associative array (withDuplicates) of associative arrays ...
(withDuplicates,wlInt) of int
<variable> is associative array (withDuplicates,wlInt) of associative arrays ...
(withDuplicates,wlInt) of int

<variable> is associative array of queue of int
<variable> is associative array (withDuplicates) of queue of int
<variable> is associative array (withDuplicates,wlInt) of queue of int

<variable> is associative array of lists of int
<variable> is associative array (withDuplicates) of stacks of integers
<variable> is associative array (withDuplicates,wlInt) of stacks of integers

<variable> is associative array of lists of int
<variable> is associative array (withDuplicates) of lists of int
<variable> is associative array (withDuplicates,wlInt) of lists of int






Exemplo: Matriz associativa de matrizes de strings:
// Declaration
arrClasses is associative array of array <growth> of strings

// Inserts an element into the associative array
Insert(arrClasses"CM2")

// Fill the CM2 student
arrClasses["CM2"][1] = "ALARD Stephen"
arrClasses["CM2"][2] = "BERTAU Kevin"

// Inserts an element into the associative array
Insert(arrClasses"CM1")

// Fill the CM1 student
arrClasses["CM1"][1] = "ALONSO Bernie"
arrClasses["CM1"][2] = "CRISTO Benjie"

FOR EACH AClasssName of arrClasses
FOR EACH Student OF AClass
Trace(sName + ":" + Student)
END
END




















Teste

Teste
teste