A tipagem fraca do AdvPL pode gerar erros em tempo de execução que só aparecem quando o usuário está utilizando o sistema. Estes erros, como 'type mismatch', 'invalid typecast', 'variable does not exist' e 'invalid field name', ocorrem quando o tipo de dado de uma variável ou expressão não é o esperado.
Type Mismatch
Ocorre quando uma expressão AdvPL tenta realizar operações (comparação, cálculo) com tipos de dados incompatíveis. Exemplos incluem somar uma string a um número ou comparar uma data a um booleano. Operadores de comparação aceitam tipos diferentes se um for NIL. Soma e subtração permitem Data com Numérico, resultando em Data.
Type Mismatch in Array Subscriptor
Acontece ao tentar acessar um elemento de um array usando um índice que não seja numérico.
cId := "123"
aTeste[cId] := 10
Invalid Typecast
Erro fatal quando uma estrutura de controle (FOR, IF, WHILE, CASE) recebe um tipo de variável inesperado. Por exemplo, inicializar um contador FOR com um booleano ou usar uma expressão de caractere em um IF.
For nVar := nInicio TO nFinal [STEP nPasso]For dVar := dInicio TO dFinal [STEP nPasso]While lVarIf lVarCase lVar
Variable Does Not Exist
Ocorre ao referenciar uma variável que não foi declarada, não existe ou não está visível no escopo atual. Se for um nome de campo, verifique se a tabela está aberta ou use o alias (Alias->campo). Variáveis LOCAIS e STATIC não são visíveis em macro-execução.
Invalid Field Name
Reproduzido ao referenciar um campo (YYYY) de uma tabela ou cursor (XXX) que não existe na estrutura do arquivo aberto.
XXX->YYYY
Argument N Error
Ocorre quando uma função espera um tipo de argumento em uma posição específica e recebe outro. Por exemplo, passar um número para uma função que espera uma string.
str("12",3)- Argumento #0, esperado N->C, função Strval(10)- Argumento #0, esperado C->N, função Valascan(cString,cInfo)- Argumento #0, esperado B->C, função ascan
Fontes oficiais
- type mismatch on XXXX - TOTVSTEC
- type mismatch in array subscriptor - TOTVSTEC
- invalid typecast - TOTVSTEC
- Variable does not exist - TOTVSTEC
- invalid field name XXX->YYYY - TOTVSTEC
- argument N error, expected X->Y, function ZZZZZZ - TOTVSTEC
Paginas publicadas pela TOTVS na Developer Network.
Comentarios 0