POSXML - Variáveis e memória

  1. Tipos de variável
  2. Limitações
  3. Passagem de parâmetros

O CloudWalk Framework é responsável por executar o aplicativo POSXML compilado, e ao ser instalado no dispositivo, assume toda a responsabilidade de gerenciamento de memória e drivers do mesmo. Sendo assim, para executar uma aplicação em um dispositivo, basta escrever um aplicativo POSXML.

Tipos de variável

A linguagem POSXML possui o conceito de tipos de variável, onde as mesmas podem ser do tipo string ou integer. Diversos comandos da linguagem POSXML exigem um tipo de variável, o qual está descrito na explicação de funcionamento dos comandos.

É possível converter variáveis do tipo integer para string e vice-versa, bastando para isso utilizar os comandos inttostring e stringtoint.

Variáveis do tipo double (ponto flutuante, decimal) também podem ser utilizadas, bastando utilizar variáveis do tipo string com a casa decimal separada por . (ponto), e não por vírgula.

Limitações

Existe uma limitação de 511 variáveis por aplicação POSXML, sendo 256 do tipo string com tamanho máximo de 1K (1023 caracteres, sendo que um é utilizado automaticamente pela plataforma para alocar o \0), e 255 do tipo integer.

Ao declarar uma variável com os comandos integervariable ou stringvariable, esta ficará na memória da aplicação até que o dispositivo seja desligado. Por este motivo, é necessário se ter o cuidado de definir no começo da aplicação todas as variáveis utilizadas e limpá-las para não ocorrer erros no decorrer da execução do aplicativo.

Atualmente existe um limite de memória de 32K para carregamento de páginas POSXML compiladas.

Passagem de parâmetros

Todo comando POSXML que possuir um parâmetro cujo nome contenha a palavra variable, por exemplo, variablereturn, é obrigatório passar uma variável para aquele parâmetro.

A passagem de variáveis é feita com a nomenclatura $(nomeDaVariavel), conforme pode ser observado abaixo:

<stringvariable value="" variable="strBuffer" />
<display line="0" column="0" message="$(strBuffer)" />

Quando no nome do parâmetro não tiver a palavra variável, é possível passar tanto uma constante quanto uma variável. A passagem de constantes é feita como em toda linguagem de programação:

<display line="0" column="0" message="Hello World" />

Em variáveis string, ainda é possível passar para o comando apenas um trecho indexado da variável, assim como em outras linguagens de programação, utilizando ponteiros de variáveis.

No exemplo abaixo, a seguinte string seria exibida: H

<stringvariable value="Hello World" variable="strBuffer" />
<integervariable value="0" variable="intIndex" />

<display line="0" column="0" message="$(strBuffer[$(intIndex)])" />

No exemplo abaixo, a seguinte string seria exibida: e

<stringvariable value="Hello World" variable="strBuffer" />
<integervariable value="1" variable="intIndex" />

<display line="0" column="0" message="$(strBuffer[$(intIndex)])" />

No exemplo abaixo, a seguinte string seria exibida: ello World

<stringvariable value="Hello World" variable="strBuffer" />
<integervariable value="1" variable="intIndex" />

<display line="0" column="0" message="$(!strBuffer[$(intIndex)])" />

Neste último exemplo foi especificado o símbolo ! para que seja exibido os caracteres da posição definida em intIndex até o final da string. Quando o símbolo ! é omitido, somente o caracter definido na posição de intIndex é exibido no display do dispositivo.