4D v16.3

Mensagens de Erro

Página Inicial

 
4D v16.3
Mensagens de Erro

Mensagens de Erro  


 

 

Esta seção descreve as diferentes mensagens geradas pelo compilador. Estas mensagens são de diferentes tipos:

  • advertências, que ajudam a evitar armadilhas comuns;
  • erros, que você deve corrigir;
  • mensagens de controle de execução, geradas dentro de 4D.

Avisos  

Estas mensagens são geradas durante o processo de compilação. Cada mensagem está acompanhada de um exemplo do problema e quando é necessário, de uma explicação adicional.

Uso de ponteiro(s) como parâmetro(s) de COPY ARRAY

 COPY ARRAY(Ponteiro->;Array)

Uso de ponteiro(s) como parâmetro(s) de SELECTION TO ARRAY

 SELECTION TO ARRAY(Ponteiro->;MinhaArray)
 SELECTION TO ARRAY([MinhaTabela]MeuCampo;Ponteiro->)

Uso de ponteiro(s) como parâmetro(s) de ARRAY TO SELECTION

 ARRAY TO SELECTION(Ponteiro->;[MnhaTabela]MeuCampo)

Uso de ponteiro(s) como parâmetro(s) de LIST TO ARRAY

 LIST TO ARRAY(Lista;Ponteiro->)

Uso de  ponteiro(s) como parâmetro(s) de ARRAY TO LIST

 ARRAY TO LIST(Ponteiro->;Lista)

Uso de  ponteiro em uma declaração de array

 ARRAY REAL(Ponteiro->;5)

O comando ARRAY REAL(Array;Ponteiro->) não gera esta advertência. O valor da dimensão de um array não tem nenhuma influência sobre seu tipo. Neste exemplo, o array ao que faz referência o ponteiro deve ter sido definido em outra parte.

Uso de ponteiro(s) como parâmetro(s) de DISTINCT VALUES

 DISTINCT VALUES(Ponteiro->;Array)

Não se recomenda utilizar a função Undefined.

 If(Undefined(Variable))

A função Undefined sempre retorna FALSE em um banco compilado.

Este método está protegido por uma senha.

Um botão com ação automática não tem nome na página X do formulário MeuForm.
Todos seus botões devem ter nomes para evitar conflitos.

Assume que o ponteiro aponta a uma expressão alfanumérica.Ponteiro->[[2]]:="a"

Assume que a string index é numérica.

 String[[Ponteiro->]]:="a"

Assume que o índice do array é de tipo real.

 ALERT(MeuArray{Ponteiro->})

Falta um parâmetro na chamada ao comando do plug-in.

 WR SET FONT(Area)
 
Nota: é possível desativar e ativar individualmente as advertências com as seguintes etiquetas:
//%W-número_de_advertencia para desativar uma advertência
//%W+número_de_advertencia para ativar uma advertência
Estas ativações e desativações são efetivas para todo o código analizado no plano de compilação. Se deseja desativar ou ativar uma advertência de maneira global, insere a etiqueta apropriada em um método chamado "Compiler_xxx" já que estes métodos são analizados primeiro pelo compilador. Por exemplo, para desativar a advertência "ponteiro em COPY ARRAY", pode inserir a etiqueta "//%W-518.1" na localização desejada.

Estas mensagens são geradas durante o processo de compilação. Você deve corrigir estes erros para que o compilador possa gerar um banco compilada. Cada mensagem está acompanhada de um exemplo do problema e quando é necessário, de uma explicação adicional.
As mensagens são classificadas por temas: Declaração, Sintaxe, Parâmetros, Operadores, Comandos de plug-ins e erros gerais.

  • Declaração

O tipo da variável não é compatível com o operador. Não é possível fazer uma instrução com estes tipos.

 MeuReal:=12.3
 MeuBooleano:=True
 MeuReal:=MeuBooleano

Mudando a longitude máxima de uma string de caracteres.

 C_STRING(3;MinhaString)
 C_STRING(5;MinhaString)

Mudando o número de dimensões de um array.

 ARRAY TEXT(MeuArray;5;5)
 ARRAY TEXT(MeuArray;5)

Conflito de tipo sobre a variável MeuArray no formulário.

 ARRAY INTEGER(MeuArray)

Declarando um array sem dimensões.

 ARRAY INTEGER(MeuArray)

Falta uma variável

 COPY ARRAY(MiArray;"")

Falta uma constante.

 C_STRING(Variavel;MinhaString)

O tipo da variável é desconhecido. Esta variável seja utiliza no método M1.
Não se pode determinar o tipo de variável. É necessária uma diretiva de compilação.

Tipo de constante incorreto : Alfanumérico

 OK:="O clima é agradável"

O método M1 é desconhecido.
A linha contém uma chamada a um método que não existe ou não existe mais.

Incorreto uso de um campo.

 MinhaData:=Add to date(CampoBooleano;1;1;1)

A longitude de uma string não pode ser superior a 255 caracteres.

 C_STRING(325;MinhaString)

A variável Variável não é um método.

 Variavel(1)

A variável Variável não é um array.

 Variavel{5}:=12

O resultado da função não é compatível com a expressão.

 Texto:="Número"+Num(i)

O tipo da variável não é compatível com o operador

 Inteiro:=MinhaData*Texto

Não se pode realizar uma atribuição com estes tipos.

 $i:="3"
 $($i):=5

O índice do array não é numérico.

 EntArray{"3"}:=4

Não se pode efetuar uma atribuição com estes tipos

 C_TEXT(Variavel)
 COPY ARRAY(TextoArray;Variavel)

Não se pode efetuar uma atribuição com estes tipos

 Variable:=Num(Variavel)

Não se pode efetuar uma atribuição com estes tipos

 Variable:=MeuBooleano

Mudar o array EntARRAY de tipo Inteiro a uma variável de tipo Texto

 ARRAY TEXT(EntArray;12)

sei EntArray foi declarado em outra parte como um array de inteiros.

Tentando referenciar uma variável que não é de tipo ponteiro. Variável->:=5

se Variável não é de tipo ponteiro.

Redeclaração da variável Var1 de tipo texto a tipo numérico.
Não se pode realizar uma atribuição com estes tiposVar1:=3.5

Incorreto uso de um campo..

 Variable:=[MinhaTabela]MeuCampo

[MinhaTabela]MeuCampo é um campo tipo Data. Variável é de tipo Numérico.

  • Sintaxe

Tentando referenciar novamente uma variável que não é de tipo ponteiro.

 Variable:=Num("O clima e agradavel")->

Não é possível referenciar novamente esta função.

Erro de sintaxe.

 If(Booleano)
 End for

Demasiados colchetes de abertura ({) .
A linha contém mais colchetes de abertura que de fechamento.

Demasiados colchetes de fechamento (})..
A linha contém mais colchetes de fechamento que de abertura.

Falta um parênteses de fechamento ).
A linha contém mais parênteses de abertura que de fechamento.

Falta um parênteses de abertura (.
A linha contém mais parênteses de fechamento que de abertura.

Falta um campo.

 If(Modified(Variable))

Falta um parênteses de fechamento ).

 C_INTEGER($

Falta uma variável.

 C_INTEGER([MinhaTabela]MeuCampo)

Tipo de constante incorreto : Alfanumérico

 C_INTEGER(${"3"})

Falta um ponto e vírgula (;).

 COPY ARRAY(Array1 Array2)
  • Mac OS:
    Demasiados caracteres de abertura para os índices da string.
 MinhaString≤3:="a"

Demasiados caracteres de fechamento para os índices da string.

 MinhaString3≥:="a"
  • Windows:
    Demasiados caracteres de abertura para os índices da string.
 MinhaString[[3:="a"

Demasiados caracteres de fechamento para os índices da string.

 MinhaString 3]]:="a"

Não se esperava uma sub-tabela.

 ARRAY TO SELECTION(Array;Subtabela)

O parâmetro de uma cláusula IF deve ser um booleano.

 If(Ponteiro)

A expressão é muito complexa.
Divida sua instrução em várias instruções mais curtas.

O método é muito complexo.
Demasiadas estruturas Case of...End case y/o If…End if.

Campo desconhecido.
Seu método, possivelmente copiado de outro banco, contém •???• ao invés de um nome de campo.

Tabela desconhecida.
Seu método, possivelmente copiado de outra banco, contém •???• ao invés de um nome de tabela.

Ponteiro a uma expressão incorreta.

 Ponteiro:=->Variavel+3

Uso incorreto de índice de string.

 MeuReal≤3≥ou MeuReal[[3]]

Utilização incorreta da Variável VARIAVEL de Tipo Texto como uma variável de tipo Real

 MinhaString≤Variavel≥ou MinhaString[[Variavel]]

onde Variável não é uma variável numérica.

  • Parâmetros

O resultado desta função não é compatível com a expressão.

 MeuMetodo(Num(MinhaString))

se MeuMetodo espera uma expressão de tipo Booleano.

Se passaram muitos parâmetros a este método.

 DEFAULT TABLE(Tabela;Form)

O resultado desta função não é compatível com a expressão.

 MeuMetodo(3+2)

se MeuMetodo espera uma expressão Booleana.

O resultado desta função não é compatível com a expressão.

 C_INTEGER($0)
 $0:=False

O resultado desta função não é compatível com a expressão.

 C_INTEGER(${3})
 For($i;3;5)
    ${$i}:=String($i)
 End for

Este comando não requer nenhum parâmetro

 SHOW TOOL BAR(MiVar)

Este comando rrequer ao menos um parâmetro.

 DEFAULT TABLE

MinhaString não pode ser passada como parâmetro a este método.

 MeuMetodo(MinhaString)

se MeuMetodo está esperando um parâmetro Booleano.

O tipo do parâmetro $1 é diferente no chamado e no método chamado.

 Calcular("3+2")

com a diretiva C_INTEGER($1) em Calcular.

Um dos parâmetros em COPY ARRAY é uma variável.

 COPY ARRAY(Variavel;Array)

Redeclaração da variável $1 de tipo Real a tipo Texto.

 $1:=String($1)

Um array não pode ser um parâmetro.
ReInit(MeuArray)Para passar um array a um método, necessita para um ponteiro ao array.

  • Operadores

O tipo de variável não é compatível com o operador.

 Bool2:=Bool1+True

A soma não pode ser realizada sobre campos Booleanos.

Não se esperaba el operador >.

 QUERY([MinhaTabela];[MinhaTabela]MeuCampo=0;>)

Não se podem comparar duas variáveis de estes tipos

 If(Numero=Imagem2)

Não se pode transformar em negativo este tipo de variável.

 Boolean:=-False
  • Comandos de plug-ins

O comando de plug-in PExt no parece estar definido corretamente.

Não foram passados suficientes parâmetros a este comando de plug-in.

Se passaram demasiados parâmetros a este comando de plug-in.

O comando Variável do plug-in não parece estar corretamente definido.

  • Erros gerais

Dois métodos tem o mesmo nome : Nome.
Para compilar seu banco, todos os métodos de projeto devem ter nomes diferentes.

Erro interno # xx.
Se aparece esta mensagem, chame ao Suporte técnico de 4D e informe o número do erro.

A variável Variável não pode ser declarada. Esta variável é utilizada no método M1.
O tipo da variável não pode ser determinado. É necessária uma diretiva de compilação.

O método original está danificado.
O método está danificado na estrutura original. Apague-o ou substitua-o.

Comando 4D desconhecido.
O método está danificado.

Redeclaração da variável Variável no formulário Formulário
Esta mensagem aparece se você dá, por exemplo, o nome OK a uma variável de tipo gráfico em um formulário.

O nome da função é também o nome de uma variável no formulário.
Renomeie a função ou a variável.

Um método e uma variável tem o mesmo nome : Nome.
Renomeie o método ou a variável.

Um comando de plug-in e uma variável tem o mesmo nome: Nome.
Renomeie o comando de plug-in comando ou a variável.

Estas mensagens são geradas por 4D durante a execução do banco compilado e são visualizados em uma janela de erro específica.

O resultado está por fora da faixa.
Se MeuArray é um array de 5 elementos, esta mensagem aparece se você tentar acessar ao elemento 17 no array.

Divisão por zero.

 Var1:=0
 Var2:=2
 Var3:=Var2/Var1

Acesso a um parâmetro que não existe.
Utilização da variável local $4 quando só três parâmetros tenham sido passados ao método atual.

O ponteiro não está corretamente inicializado.

 MeuPonteiro->:=5

se MeuPonteiro não tiver sido inicializado ainda.

A string de destino é menor que a fonte.

 C_STRING(MinhaString1;5)
 C_STRING(MinhaString2;10)
 MinhaString2:="Flores"
 MinhaString1:=MinhaString2

A referência do caracter não é válida.

 i:=-30
 MinhaString[[i]]:=MinhaString2 ou MinhaString[[i]]:=MinhaString2

O parâmetro é uma string vazia.

 MinhaString[[1]]:=""
 MinhaString[[1]]:=""

Módulo por zero.

 Var1:=0
 Var2:=2
 Var3:=Var2% Var1

Parâmetros incorretos em um comando Execute Fórmula.

 EXECUTE FORMULA("MeuMetodo(MeuAlfa)")

se MeuMetodo espera um parâmetro diferente de um alfanumérico.

Ponteiro a uma variável desconhecida.

 MeuPonteiro:=Get pointer("Variable")
 MeuPonteiro:="MinhaString"

se Variável não aparece explicitamente no banco.

Tentativa de redirecionar usando um ponteiro

 Booleano:=Ponteiro->

se ponteiro aponta a um campo de tipo Inteiro.

Mal uso de um ponteiro ou ponteiro a uma variável desconhecida

 Caracter:=StringVar[[Ponteiro->]]
 Caracter:=StringVar[[Ponteiro]]

se ponteiro não aponta a um número.



Ver também 

Detalhes de sintaxe
Dicas de otimização
Guia Digitação
Usar Diretivas de Compilador

 
PROPRIEDADES 

Produto: 4D
Tema: Compilador

 
HISTÓRIA 

 
PALAVRAS CHAVES 

warning

 
ARTICLE USAGE

Manual de linguagem 4D ( 4D v16)
Manual de linguagem 4D ( 4D v16.1)
Manual de linguagem 4D ( 4D v16.2)
Manual de linguagem 4D ( 4D v16.3)