Posté le 08 janvier 2016 - 13:44
|
Prezados,
A
linguagem WL é cheia de recursos, quando alguém fala que não dá, muitas
vezes não conhece os por menores da Suíte PcSoft. E a cada dia fico
impressionado o quando é poderosa e como pode simplificar a nossa vida
de consultor, analista e desenvolvedor de sistemas. Hoje vou falar sobre
a variável do tipo VARIANT E O TIPO BUFFER, ou seja, ela pode ser o que
vc quiser, ela pode armazenar, textos, binários, NULL, retornos de
httprequest com padrões de caracteres que acabam vindo com caracteres
acentuados ou com caracteres diferentes da tabela ANSI ou UNICODE e
gerando travamento.
A Variant tipo (Type da variável) Em francês: Variant
A variante tipo é usado para:
armazenar qualquer simples value: boolean, numérico (moeda, de 8
bytes reais, assinado inteiro de 4 bytes), personagens e cadeia de
caracteres, data (data, hora, DateTime e Duração). loja chamada ou subscrito sub-elementos.
armazenar qualquer complexo valor: estruturas, classes, tipos
avançados, matrizes, matrizes associativas, filas, pilhas e listas. lidar com o valor NULL em WLanguage. armazenar as interações com os objetos ActiveX e da programação Automation.
Exemplo
nValue é Variant = 10
nValue = EDT_ Edit1
nValue = Cliente. Nome
Sintaxe
Declarando e atribuindo um Variant tipo Esconder os detalhes
<Nome da variável> é Variant = <Value> OU <nome da
variável> é Variant <nome da variável> = <Value>
<Nome da variável>:
Nome da variável a declarar.
<Valor>:
Valor que deve ser atribuído à variável. A Variant variável pode ser atribuído com:
qualquer valor literal, o conteúdo de uma variável, o conteúdo de um controle simples, o conteúdo de um item.
Observações
Variant tipo e NULL Para especificar que uma Variant variável não contém nenhum valor, use a constante NULL.
Notas:
para uma variante tipo, NULL significa "Não atribuído". para um tipo numérico, NULL significa "igual a 0".
nVal é int
IF vVal = NULL THEN ...
nVal = 5
IF vVal = NULL THEN ...
vVal é Variant
IF vVal = NULL THEN ...
vVal = 0
SE vVal = NULL THEN ...
vVal = 5
IF vVal = NULL THEN ...
vVal é Variant
vVal = Null
IF vVal = 0 THEN ...
Tipo de uma variante O tipo de uma variante é retornado por ..Type. ..Type É usado para descobrir o tipo do valor armazenado na variável.
Notas:
VariantConvert é usado para converter o tipo de valor armazenado numa variante variável. TypeVar é usado para descobrir o tipo de uma variável (Variant tipo para um Variant variável).
v Val é Variante TypeVar (v Val) // devolve o número da variante de tipo v Val ..Type // retorna o tipo do valor armazenado na variante
..Class Propriedade sobre as variantes ..Class Nas variantes variáveis é usado para encontrar o nome da classe utilizada se a variante corresponde a uma classe.
Sub-elementos nomeados Você pode usar diretamente os membros sem qualquer declaração em uma Variant variável.
Ao atribuir um membro, se o membro não existe, ela é criada automaticamente; se o membro já existe, ele é modificado.
Exemplo:
Pessoa é Variant
pessoa. LastName = "MOORE"
Pessoa. FirstName = "Vince"
Ao
ler um membro, se o membro não existe, não é criado. Você tem a
capacidade de verificar a presença de um membro via ..Exist. Exemplo:
Pessoa é Variant
SE NÃO personn. Nome ..Exist ENTÃO
erro ("O nome não foi especificado")
END
Se o membro não existe, o valor retornado é nulo. No entanto, ..Value deve ser usado para verificar explicitamente o valor nulo. Exemplo:
Elemento é Variant
IF elemento. MemberNotFound ..Value = NULL THEN
...
END
Os sub-elementos nomeados podem ser tratados pelas seguintes propriedades: Existir Retorna:
Verdadeiro se o elemento existe, False se o elemento não existe. O elemento não foi criado.
Nome Nome do elemento Tipo Tipo de o elemento (mesmos valores que TypeVar). Valor Valor do elemento.
..Member
Nas Variant variáveis é usado para obter a matriz de elementos
nomeados. Esta matriz pode ser tratada por para cada um, o ..Occurrence
propriedade, o operador [], ...
Sub-elementos subscritos Você
pode usar diretamente o Variant variável de tipo como uma matriz de
variantes. Usando o operador [] cria automaticamente a matriz.
Exemplo:
Dias é Variant
dias [1] = "Segunda"
Dias [2] = "terça-feira"
Dias [3] = "quarta-feira"
Dias [4] = "Quinta-feira"
Dias [5] = "Friday"
Dias [6] = "Saturday
"Dias [7] =" Sunday "
As operações de matriz pode ser realizada diretamente na Variant variável: para cada um, ..Occurrence, [] operador, ...
Aninhando sub-elementos nomeados e subscritos Os sub-elementos nomeados e sub-elementos subscritas sendo eles mesmos de Variant tipo, você pode recursivamente ninho eles.
Exemplo:
Biblioteca é Variant
biblioteca. Reserve [1]. Título = "Mrs Dalloway"
Biblioteca. Reserve [1]. Autor = "Virginia Woolf"
Biblioteca. Reserve [2]. Título = "Oliver Twist"
Biblioteca. Reserve [2]. Autor = "Charles Dickens"
Veja também VariantConvert:
http://help.windev.com/en-US/…
Em resumo Show de bola!!!!
O "BUFFER" (tipo de variável)
Visão geral O BUFFER tipo corresponde a uma zona de memória binária.
Através
deste tipo, um código que lida com o formato binário pode ser
compartilhado entre um aplicativo WINDEV padrão e uma aplicação WINDEV
Mobile.
Em WINDEV padrão, uma variável seqüência de caracteres podem conter caracteres e dados binários (uma imagem por exemplo).
Em
WINDEV Móvel, se uma variável de seqüência de caracteres contém dados
binários, estes dados podem ser corrompidos (conversão indevida por
exemplo). Para lidar com dados binários, recomendamos que você use um
buffer de variável.
O BUFFER tipo gere nenhum marcador fim específico e que permite que você armazene zeros binários.
Dois tipos de variáveis estão disponíveis:
BUFFER: Este tipo permite que você gerencie uma zona de memória com
um tamanho dinâmico: ele é automaticamente adaptado ao buffer de
conteúdo. BUFFER em: Este tipo é usado para lidar com uma zona de
memória cujo tamanho (em bytes) é definido durante a compilação. Este é
um tipo avançado usado para executar operações específicas na memória,
para usar algumas APIs do Windows.
Por que eu deveria usar um BUFFER tipo? Em WINDEV, o seguinte código pode ser usado para lidar com os bytes binários:
S é seqüência = Charact (1) + Charact (0)
A zona de memória correspondente é:
0 1
Este mesmo código executado em ANSI (padrão WINDEV) e Unicode (WINDEV Mobile) não tem o mesmo comportamento.
Para ter o mesmo código em ANSI e em Unicode, a seqüência de caracteres deve ser substituído por um BUFFER. O código torna-se:
S é BUFFER
S [[1]] = 1
S [[2]] = 0
O buffer Tipo: Sintaxe e uso
Declarando um BUFFER variável
<Nome da variável> é BUFFER
OU
<Nome da variável 1>, <Nome de Variável 2> são Buffers
Detalhes da sintaxe
<Nome da variável>: Nome da variável a declarar.
Notas:
A uma e uma palavras-chave são opcionais: eles fornecem uma melhor legibilidade. Por padrão, um BUFFER variável está vazia.
Mybuffer é BUFFER
Declarar e inicializar um buffer variável
Para declarar e inicializar um buffer variável, Use a seguinte sintaxe:
<Nome da variável> é BUFFER = [<Hexa Valor 1>, <Hexa Valor 2>, ...
Detalhes da sintaxe
<Nome da variável>:Nome da variável a declarar.
Hexa ValueValor hexadecimal
Exemplo:
b é BUFFER = [0x01, 0x02, 0x03]
Operações nos buffers
Os tampões podem ser tratadas como as cadeias de caractères.
Para atribuir um BUFFER, Use uma das seguintes sintaxes:
a atribuição de um buffer de string: <Nome do BUFFER variável> = <My String>. Por exemplo:
[code:wl]
Mybuffer é BUFFER
mybuffer = "WINDEV é grande"
a atribuição de um buffer de bytes: <Nome do BUFFER variável>
[[<Byte Subscrito>]] = <código ASCII de Byte>. Por exemplo:
Mybuffer é BUFFER
mybuffer [[1]] = 65
Usando funções:
Esquerda, Direita e Oriente pode ser usado nos buffers. Veja a ajuda sobre estas funções para obter mais detalhes. Tamanho é utilizada para descobrir o tamanho real dos dados contidos no BUFFER (em bytes).
Usando os operadores:
O operador [[]] é usado para acessar:
um byte DO BUFFER. Por exemplo:
Mybuffer é BUFFER
mybuffer = "WINDEV é grande"
mybuffer [[1]] = "W"
uma secção DO BUFFER. Por exemplo:
Mybuffer é BUFFER
mybuffer = "WINDEV é grande"
Informações (mybuffer [[8 PARA 15]])
O BUFFER On tipo: Sintaxe e uso avançado
Declarando um BUFFER Na variável
<Nome da variável> é BUFFER Em <Buffer de Tamanho> OU <Nome da variável 1>, <Nome de Variável 2> são amortecedores Em <tamanho dos buffers>
Detalhes da sintaxe
<Nome da variável>: Nome da variável a declarar. <Buffer de tamanho>: Tamanho do BUFFER de bytes
Notas:
A uma e uma palavras-chave são opcionais: eles fornecem uma melhor legibilidade. Por padrão, um BUFFER na variável é preenchido com o caractere 0.
Mybuffer é BUFFER em 4
mybuffer = "ABCDE"
mybuffer = "ZZ"
Manipulação dos buffers fixos Os buffers fixos são tratados como os buffers simples. No entanto, deve ser tido em conta algumas diferenças.
Em tempo de execução, o tamanho real dos dados encontrados no BUFFER não é conhecido:
Quando a gravação de dados que é maior do que o BUFFER de tamanho,
os dados são truncados para o tamanho da memória intermédia.
Quando a gravação de dados que é mais pequeno do que o BUFFER de
tamanho, a secção do BUFFER não afectada pela operação de escrita mantém
o seu valor anterior.
Para lidar com este tipo de BUFFER, recomendamos que você armazenar o tamanho real do BUFFER em uma variável Integer.
Lembrete:
o BUFFER tipo gerencia automaticamente o seu próprio tamanho. Ao usar
um fixo BUFFER, aconselhamo-lo a copiar rapidamente o seu valor em um
automático de buffer.
bFixedBuffer é BUFFER em 200
nSize é int
nSize = API (<API Name>, <Parâmetros>, bFixedBuffer, 200)
bBuffer é BUFFER
bBuffer = Esquerda (bFixedBuffer, nSize)
Bom espero ter ajudado com esse novo post alguém e mostrado o quanto é poderosa a WL.
-- Adriano José Boller ______________________________________________ Consultor e Representante Oficial da PcSoft no Brasil +55 (41) 9949 1800 adrianoboller@gmail.com skype: adrianoboller http://wxinformatica.blogspot.com.br/
|
|
|
|
|
|
Nenhum comentário:
Postar um comentário