https://youtu.be/V644jdGbmms
Bom Dia Boa Tarde Boa Noite
Mande um email pedido para receber todas notificaçoes dos videos
email : amarildo.matos@gmail.com
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", sFile, nSize))
END
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", sFile, nSize))
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:
WithDuplicates Esta constante é usada para permitir duplicatas. Por padrão, uma matriz associativa não pode conter duplicatas. ccIgnoreAccent Se o tipo de chave for uma string (por padrão), a indexação ignora os caracteres acentuados. Esta constante não está disponível.ccIgnoreCase Se o tipo de chave for uma string (por padrão), a indexação não diferencia maiúsculas de minúsculas. ccIgnoreSpace Se o tipo de chave for uma string (por padrão), a indexação ignora os caracteres de espaço. ccIgnorePunctuationAndSpace Se 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. 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:O valor "*" é usado para manter o tipo de chave padrão (string).
wlString Cadeia de caracteres wlUnicodeString Seqüência de caracteres Unicode wlDate Data wlDateTime Data hora wlInt Inteiro assinado de 4 bytes wlInt_8 Inteiro assinado de 8 bytes wlUnsignedInt_4 Inteiro de 4 bytes sem sinal wlUnsignedInt_8 Inteiro de 8 bytes sem sinal wlTime Tempo wlCurrency Moeda wlNumeric Numérico wlReal 8 bytes reais 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.Este parâmetro não está disponível.
<Tipo>:
Tipo dos elementos encontrados na matriz.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.Observação: Os elementos que compõem o array também podem ser arrays, arrays fixos, arrays associativos, filas, pilhas ou listas.
Observações
As seguintes propriedades podem ser usadas para lidar com uma matriz associativa:
| Retorna o número de ocorrências na matriz. | |
Empty | Usado para descobrir se o array está vazio ou não. |
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. 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. 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. 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. 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. 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>], ... ]
[ [<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]]
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)
ArrayDelete(ArrayName,Key)
- 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(sName, sInfo)
// 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.
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)
// 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)
// 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.
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
<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 AClass, sName of arrClasses
FOR EACH Student OF AClass
Trace(sName + ":" + Student)
END
END
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 AClass, sName of arrClasses
FOR EACH Student OF AClass
Trace(sName + ":" + Student)
END
END