“Scripting” com o Magic xpa

Veja como usar o Compile & Run do Magic xpa Runtime, e tenha recursos semelhantes a ‘Scripting’ nos seus sistemas Magic.

Vamos iniciar fazendo uma menção justa a quem merece: CA-Clipper.

É curioso ver como hoje em dia se apresentam tantos novos recursos com muita propaganda e badalação, sendo que são apenas ‘revisões’ de recursos existentes desde muito tempo.

As famosas ‘Expressões Lambdas‘ por exemplo. São muito legais, especialmente porque podem ser passadas como “argumentos” a rotinas (métodos), o que permite escrever algoritmos muito mais dinâmicos, já que parte de seu comportamento poderá ser definido (e alterado) durante sua ‘chamada’.

Mas isso já existia muito tempo antes, com os ‘Code Blocks‘ do CA-Clipper. Particularmente, conheci em 1994. E quando vi o Lambda, pensei de cara: legal, que nem era no Clipper.

Sabe outra coisa bacana que tinha no CA-Clipper.? ‘Macro Operator‘. Podíamos executar códigos ‘novos, criados na hora‘, que não existiam durante a programação original do sistema.

E este é o tema de nossa publicação de hoje.

Compile & Run (Macros)

Nós temos, também desde versões bem antigas da plataforma, um recurso no Magic xpa Runtime que nos permite durante a execução do sistema, avaliar sintaticamente uma expressão, executá-la e obter seu resultado.

Como um ‘Macro Operator‘, só que melhor .

Avaliar uma expressão que ‘não existia‘ durante a fase de desenvolvimento, de codificação da aplicação.

Uma expressão que pode ter sido montada alguns instantes antes, considerando por exemplo um ‘input‘ do usuário ou um recurso externo que ficou disponível ao sistema só durante sua execução.

Isso significa poder executar código que não foi preparado com o Magic xpa Studio, durante a fase de desenvolvimento, mas que foi dinamicamente gerado apenas durante a execução deste mesmo sistema.

Isso é possível através das funções EvalStr e EvalStrInfo.

EvalStr

Recebe uma ‘string’ como argumento. Esta ‘string’ deve conter, textualmente, uma expressão sintaticamente válida para o Magic xpa Runtime.

Esta expressão pode conter funções, literais (constantes), operadores, referência a variáveis (de memória ou datasources).

Por exemplo, veja a seguir:

'Em ' & Trim( VarCurrN( 'SimpleVAR1' ) ) & ' são ' & Trim(mTStr(mTime(),'HHh MMmin SSseg mmmmil')) & ' do dia ' & DStr(Date(),'DD') & ' de ' & StrToken( VarCurrN( 'SimpleVAR2' ), Month( Date() ), ',' ) & ' de ' & DStr(Date(),'YYYY')

Esta é uma expressão sintaticamente válida para o Magic xpa Runtime, que combina o uso de constantes, variáveis, funções e operadores.

O retorno de EvalStr é o resultado final da expressão, calculado depois dela passar na validação sintática.

EvalStrInfo

Recebe uma ‘string’ como argumento e também um ‘número’, representando qual informação se está querendo conferir. Esta ‘string’ deve conter, textualmente, uma expressão sintaticamente válida para o Magic xpa Runtime.

O retorno de EvalStrInfo é a análise interna da expressão, antes dela ser de fato calculada.

Por exemplo:

  • Argumento ‘número’ = 1 : O tipo de dado que a expressão irá retornar, quando calculada. Pode ser [A]lpha, [N]umeric, [D]ate, [T]ime, [L]ogical, [U]nicode ou [B]lob. Se houver erro na expressão, retorna [E]
  • Argumento ‘número’ = 2 : Se houver erro na expressão, retorna a mensagem do erro encontrado. Por exemplo: “missing end of expression” ou “invalid variable”

Veja abaixo:

 

É uma interface com usuário onde ele pode alimentar duas variáveis, e escrever uma expressão Magic xpa.

Conforme forem as informações dinamicamente providas, o resultado vai sendo compilado e executado pelo Runtime. Real-time.

 

Não precisa espalhar por aí. Mas sabe quem usa e abusa desse excelente recurso? O Magic xpi.

E a regra é clara: se alguém pode, você também pode.

 

Baixe deste link um projeto exemplo do Magic xpa, e desfrute de mais esta poderosa feature da plataforma.

Quer conhecer o Magic xpa? Baixe gratuitamente… https://lg.magicsoftware.com/magic-xpa-free-single-user-edition

Manoel Frederico Silva – Gerente de Tecnologia e Evangelista MAGIC – Magic Brasil
Manoel Frederico Silva – Evangelista MAGIC – Magic Brasil

Para receber os artigos do Blog Magic Brasil em primeira mão no seu email, registre-se aqui

Deixe um comentário

O seu endereço de e-mail não será publicado.