4D v16.3

Convenções

Página Inicial

 
4D v16.3
Convenções

Convenções  


 

 

Esta seção descreve as convenções de escrita e de nomes aplicadas aos diferentes identificadores utilizados na linguagem 4D (variáveis, arrays, . O nome de cada objeto deve respeitar as regras abaixo:

  • Um nome deve começar com um caractere alfabético (uma letra) ou um sublinhado.
  •  o nome pode incluir caracteres alfabéticos, caracteres numéricos, ou caracteres especiais, e o caractere underscore.
  • As vírgulas, barras obliquas, aspas e dois pontos (:) não estão permitidos
  • Pontos finais (".") e os colchetes ("[ ]") não estão permitidos nos nomes de tabelas, campos, métodos ou variáveis quando a notação objeto estiver ativa. (ver Notação de objeto)
  • Caracteres reservados para uso como operadores, tais como * e +, não são permitidos.
  • 4D ignora espaços à direita.

Nota: As regras complementares precisam ser respeitadas quando os objetos precisam ser tratados através de SQL: só _0123456789abcdefghijklmnopqrstuvwxyz são caracteres aceitos, e o nome não deve incluir as palavras-chaves SQL (comand, attribute, etc.) A área do Inspetor "SQL" no editor de estrutura indica automaticamente os caracteres não autorizados no nome de uma tabela ou campo.

Tabelas  

Você denota uma tabela, colocando seu nome entre colchetes: [...]. Um nome de tabela pode conter até 31 caracteres.

Exemplos

 DEFAULT TABLE([Pedidos])
 FORM SET INPUT([Clientes];"Entrada")
 ADD RECORD([Cartas])

Campos  

Se indica que é um campo especificando primeiro a tabela à qual o campo pertence. O nome do campo segue imediatamente após o nome da tabela. Um nome de campo pode conter até 31 caracteres.

Exemplos

 [Pedidos]Total:=Sum([Linha]Quantidade)
 QUERY([Clientes];[Clientes]Nome="López")
 [Cartas]Texto:=Capitalize text([Cartas]Texto)

Você denota uma variável interprocesso precedendo o nome da variável com os símbolos (<>) - um sinal de "menor que" seguido por um sinal de "maior que".

Nota: Esta sintaxe pode ser usado tanto em Windows e Macintosh. Além disso, somente no Macintosh, você pode usar o diamante (Option-Shift-V no teclado americano).

Uma variável interprocessos pode ter até 255 caracteres (*), não incluindo os símbolos <>.

(*) 31 caracteres se a opção de compatibilidade "Guardar métodos como Unicode" estiver desmarcada. (ver Página Compatibilidade)

Exemplos

 <>vlProcessoID:=Current process
 <>vsKey:=Char(KeyCode)
 If(<>vtNome#"")

Você denota uma variável de processo, utilizando o seu nome (que não pode começar com os símbolos <>, nem com sinal de dólar $). Um nome de variável de processo pode conter até 255 caracteres.

(*) 31 caracteres se a opção de compatibilidade "Guardar métodos como Unicode" estiver desmarcada. (ver Página Compatibilidade)

Exemplos

 vrGranTotal:=Sum([Contas]Quantidade)
 If(bValidar=1)
    vsNomeAtual:=""

Você denota uma variável local com um cifrão ($) seguido pelo seu nome. Um nome de variável local pode conter até 255 (*) caracteres, não incluindo o cifrão.

(*) 31 caracteres se a opção de compatibilidade "Guardar métodos como Unicode" estiver desmarcada. (ver Página Compatibilidade)

Exemplos

 For($vlRegistro;1;100)
    If($vsTempVar="Não")
       $vsMinhaString:="Bom dia"

Arrays  

Você denota um array usando o seu nome, que é o nome que passou para a declaração de array (como ARRAY LONG INT) quando você criou o array. Arrays são variáveis, e do ponto de vista de alcance, como as variáveis, existem três diferentes tipos de arrays:

  •  Arrays interprocesso,
  •  Arrays processo,
  • Arrays locais.

Arrays interprocesso
O nome de um array interprocesso é precedido pelos símbolos (<>) - um sinal "de menor que" seguido por um sinal "maior que".

Nota: Esta sintaxe pode ser usado tanto em Windows e Macintosh. Além disso, somente no Macintosh, você pode usar o diamante (Option-Shift-V no teclado americano).

O nome de um array interprocessos pode ter até 255 caracteres (*), não incluindo os símbolos <>.

Exemplos

 ARRAY TEXT(<>attemas;Records in table([Temas]))
 SORT ARRAY(<>asPalavrasChaves;>)
 ARRAY INTEGER(<>aiGranArray;10000)

Arrays processo
Você denota um array de processo, utilizando o seu nome (que não pode começar com os símbolos <>, nem com sinal de dólar $). Um nome de array de processo pode conter até 255 caracteres (*).

Exemplos

 ARRAY TEXT(atTemas;Records in table([Temas]))
 SORT ARRAY(asPalavrasChave;>)
 ARRAY INTEGER(aiGranArray;10000)

Arrays locais
O nome de um array local é precedido por um cifrão ($). Um nome de um array local pode conter até 255 (*) caracteres, não incluindo o cifrão.

Exemplos

 ARRAY TEXT($atAssuntos;Records in table([Temas]))
 SORT ARRAY($asPalavrasChave;>)
 ARRAY INTEGER($aiGranArray;10000)

(*) 31 caracteres se a opção de compatibilidade "Guardar métodos como Unicode" estiver desmarcada. (ver Página Compatibilidade)

Elementos de arrays
Você referencia a um elemento de um interprocesso, processo ou array local, usando as chaves ({...}). O elemento de referência é denotado por uma expressão numérica.

Exemplos

  ` Endereçando um elemento de um array interprocesso
 If(<>asPalavrasChave{1}="Parar")
    <>atAssuntos{$vlElem}:=[Temas]Assunto
    $viPróximoValor:=<>aiGranArray{Size of array(<>aiGranArray)}
 
  ` Endereçando um elemento de um array processo
    If(asPalavrasChave{1}="Parar")
       atAssuntos{$vlElem}:=[Temas]Assunto
       $viProximoValor:=aiGranArray{Size of array(aiGranArray)}
 
  ` Endereçando um elemento de um array local
       If($asPalavrasChave{1}="Parar")
          $atAssuntos{$vlElem}:=[Temas]Assunto
          $viProximoValor:=$aiGranArray{Size of array($aiGranArray)}

Elementos de um array bi-dimensional
Você referencia a um elemento de um array bi-dimensional, usando as chaves ({...}) duas vezes. O elemento de referência é representado por duas expressões numéricas em dois conjuntos de chaves.

Exemplos

  ` Endereçar um elemento de um array interprocesso de duas dimensões
 If(<>asPalavrasChave{$vlLinhaSeguinte}{1}="Parar")
    <>atAsuntos{10}{$vlElem}:=[Temas]Asunto
    $viValorSeguinte:=<>aiGranArray{$vlSet}{Size of array(<>aiGranArray{$vlSet})}
 
  ` Endereçar um elemento de um array processo de duas dimensões
    If(asPalavrasChave{$vlLinhaSeguinte}{1}="Parar")
       atSubjects{10}{$vlElem}:=[Temas]Tema
       $viValorSeguinte:=aiGranArray{$vlSet}{Size of array(aiGranArray{$vlSet})}
 
  ` Endereçar um elemento de um array local de duas dimensões
       If($asPalavrasChave{$vlLinhaSeguinte}{1}="Parar")
          $atAsuntos{10}{$vlElem}:=[Temas]Tema
          $viValorSeguinte:=$aiGranArray{$vlSet}{Size of array($aiGranArray{$vlSet})}

Quando a notação de objetos é habilitada  (ver Notação de objeto), se designa um atributo objeto (também chamado de propriedade objeto) colocando um ponto (".") entre o nome do objeto (ou atributo) e o nome do atributo. Um nome de atributo pode conter até 255 caracteres e distingue entre maiúsculas e minúsculas.

Exemplos:

 myObject.myAttribute:="10"
 $value:=$clientObj.data.address.city

Nota: se aplicam regras adicionais aos nomes de atributos de objetos (devem se ajustar à especificação ECMA Script). Para mais informação, consulte Usar notação padrão objeto (preview).

Você denota um formulário usando uma expressão de string que representa o seu nome. O nome de formulário pode conter até 31 caracteres.

Exemplos

 FORM SET INPUT([Pessoas];"Entrada")
 FORM SET OUTPUT([Pessoas];"Saída")
 DIALOG([Deposito];"Caixa de notas"+String($vlEtapa))

Você designa um objeto de formulário passando seu nome como uma cadeia, precedido pelo parâmetro *. Um nome de objeto pode conter até 255 bytes.

Exemplo:

 OBJECT SET FONT(*;"Binfo";"Times")

Ver também a seção Propriedades dos objetos.

Nota: não confunda objetos de formulário (botões, list boxes, variáveis que podem ser introduzidas, etc.) e os objetos da linguagem 4D. Os objetos da linguagem 4D são criadas e manipuladas através de notação objeto ou comandos dedicados. (ver Objetos (Linguagem))

Você denota um método (procedimento e função), usando seu nome. O nome de um método pode conter até 31 caracteres.

Nota: Um método que não retorna um resultado é também chamado de procedimento. Um método que retorna um resultado também é chamado de função.

Exemplos

 If(Novo cliente)
    APAGAR VALORES DUPLICADOS
    APPLY TO SELECTION([Empregados];AUMENTAR SALARIOS)

Dica: É uma boa técnica de programação adoptar a mesma convenção de nomeação utilizada pela 4D para comandos internos. Use letras maiúsculas para nomear os seus métodos, no entanto, se um método é uma função, use a primeira letra maiúscula. Ao fazer isso, quando você reabrir um banco de dados para a manutenção depois de alguns meses, você já vai saber se um método retorna um resultado simplesmente olhando para o seu nome na janela do Explorer.

Nota: Quando você chamar um método, digite apenas o seu nome. No entanto, alguns comandos 4D embutidos, como ON EVENT CALL,, bem como todos os comandos de Plug-In, esperam que o nome de um método como seqüência, quando um parâmetro é passado. Exemplo:

Exemplos

  ` Este comando espera um método (função) ou fórmula
 QUERY BY FORMULA([aTabela];Special query)
  ` Este comando espera um método (procedimento) ou declaração
 APPLY TO SELECTION([Empregados];AUMENTAR SALARIOS)
  ` Mas esse comando espera um nome de método
 ON EVENT CALL("MANEJAR EVENTOS")
  ` E este comando de plug-in espera um nome de método
 WR ON ERROR("WR CONTROLAR ERROS")

Métodos podem aceitar parâmetros (argumentos). Os parâmetros são passados para o método, entre parênteses, ao lado do nome do método. Cada parâmetro é separado do seguinte por um ponto e vírgula (;). Os parâmetros estão disponíveis dentro do método chamado como variáveis locais numeradas consecutivamente: $1, $2, ..., $n. Além disso, vários parâmetros consecutivos (e o último) pode ser acessados com a sintaxe $(n), onde n, expressão numérica, é o número do parâmetro.

Dentro de uma função, a variável local $0 contém o valor a ser retornado.

Exemplos

  ` Em ELIMINAR ESPAÇOS $1 é um ponteiro para o campo [Pessoas]Nome
 ELIMINAR ESPAÇOS(->[Pessoas]Nome)
 
  ` Em Criador calc:
  ` - $1 é numérico e igual a 1
  ` - $2 é numérico e igual a 5
  ` - $3 é um texto ou string e igual a "Legal"
  ` - O valor do resultado é atribuído a $0
 $vsResult:=Criador calc(1;5;"Legal")
 
  ` En Jogar fora:
  ` - Os três parâmetros são texto ou seqüência
  ` - Eles podem ser tratados como $1, $2 ou $3
  ` - Eles podem também ser acessadas como, por exemplo, ${$vlParam} onde $ vlParam é 1, 2 o 3
  ` - O valor do resultado é atribuído a $0
 vtClon:=Jogar fora("es";"el";"ele")

Você denota um plug-in de comando usando o seu nome, tal como definido pelo plug-in. Um plug-in do nome do comando pode conter até 31 caracteres.

Exemplos

 $error:=SMTP_From($smtp_id;"henry@gmail.com")

Do ponto de vista do escopo, existem dois tipos de conjuntos: conjuntos Interprocesso e conjuntos Processo:

  • Conjuntos interprocesso
  • Conjuntos processo.

4D Server também inclui:

  • Conjuntos clientes.

Conjuntos interprocesso
Um conjunto é um interprocesso se o nome do conjunto é precedido pelos símbolos (<>) - um sinal de "menor que" seguido por um sinal de "maior que".

Nota: Esta sintaxe pode ser usado tanto em Windows e Macintosh. Além disso, somente no Macintosh, você pode usar o diamante (Option-Shift-V no teclado americano).

O nome do conjunto de inter pode conter até 255 caracteres, não incluindo os símbolos <>.

Conjuntos processo
Você denota um processo usando uma expressão de string que representa o seu nome (que não pode começar com os símbolos <> ou com o sinal de dólar $). Um conjunto de nome definido conter até 255 caracteres.

Conjuntos cliente
O nome de um conjunto de clientes é precedido pelo cifrão ($). Um nome conjunto de clientes pode conter até 31 caracteres, não incluindo o cifrão.

Nota: Os conjuntos são armazenados na máquina Server. Em certos casos, por eficiência ou propósitos especiais, pode ser necessário trabalhar com conjuntos localmente na máquina do cliente. Para fazer isso, você pode usar conjuntos de clientes.

Exemplos

  ` Conjuntos interprocesso
 USE SET("<>Registros apagados")
 CREATE SET([Clientes];"<>Pedidos clientes")
 If(Records in set("<>Seleção"+String($i))>0)
  ` Conjuntos processo
    USE SET("Registros apagados")
    CREATE SET([Clientes];"Pedidos clientes")
    If(Records in set("<>Seleção"+String($i))>0)
  ` Conjuntos cliente
       USE SET("$Registros apagados")
       CREATE SET([Clientes];"$Pedidos clientes")
       If(Records in set("$Seleção"+String($i))>0)

Do ponto de vista do escopo, existem dois tipos de seleções temporárias: 

  • Seleções temporárias Interprocesso
  • Seleções temporárias Processo.

Seleções de nome Interprocesso
Uma seleção temporária é um uma seleção de nomes interprocesso se seu nome é precedido pelos símbolos (<>) - um sinal de "menor que" seguido por um sinal de "maior que"..

Nota: Esta sintaxe pode ser usado tanto em Windows e Macintosh. Além disso, somente no Macintosh, você pode usar o diamante (Option-Shift-V no teclado americano).

Uma seleção temporária interprocesso pode conter até 255 caracteres, não incluindo os símbolos <>.

Seleções temporárias processo
Você denota um processo chamado seleção usando uma expressão de string que representa o seu nome (que não pode começar com os símbolos <>, nem com o sinal de dólar $). Uma seleção temporária pode conter até 255 caracteres.

Exemplos

  ` Seleção temporária interprocesso
 USE NAMED SELECTION([Clientes];"<>PorCodigopostal")
  ` Seleção temporária processo
 USE NAMED SELECTION([Clientes];"PorCodigopostal")

Na versão de um único usuário, ou cliente / servidor do lado do cliente, existem dois tipos de processos:

  • Processos Globais
  • Processos locais.

Processos globais 
Você indica um processo global, utilizando uma expressão de string que representa o seu nome (que não pode começar com o sinal de dólar $). Um nome de processo pode conter até 255 caracteres.

Processos locais
Você denota um processo local se o nome do processo é precedido por um cifrão ($). O nome do processo pode conter até 255 caracteres, não incluindo o cifrão.

Exemplo

  ` Iniciar o processo global "Adicionar clientes"
 $vlProcessoID:=New process("P_ADD_CUSTOMERS";48*1024;"Adicionar clientes")
  ` Iniciar o processo local "$Seguir Movimientos Mouse"
 $vlProcessoID:=New process("P_MOUSE_SNIFFER";16*1024;"$Seguir movimentos do mouse")

A tabela a seguir resume as convenções de escrita nos métodos de 4D.

TipoComp. max.Exemplo
Tabela31[Faturas]
Campo31[Empregados]Sobrenome
Variável/ Array interprocesso<> + 255<>vlProcessoSeguinteID
Variável/ Array processo255vsNomeAtual
Variável/ Array local$ + 255$vlContadorLocal
Atributos de objetos255$o.myAttribute
Local Array$ + 31$atValues
Formulário31"Formulário Web personalizado"
Objeto de formulÁrio255"MyButton"
Array interprocesso<> + 31<>apTabelas
Array processo 31asGênero
Array local $ + 31$atValores
Método 31M_ADICIONAR_CLIENTES
Comando de plug-in31WR INSERIR TEXTO
Conjunto interprocesso<> + 255"<>Registros a arquivar"
Conjunto processo255"Registros atuais selecionados"
Conjunto cliente$ + 255"$Temas anteriores"
Seleção temporária255"Empregados de A a Z"
Seleção temporária interprocesso<> + 225"<>Empregados de Z a A"
Processo local$ + 255"$Seguir Eventos"
Processo global255"P_MODULO_FATURAS"
Semáforo255mysemaphore"

(*) 31 caracteres se a opção de compatibilidade "Guardar métodos como Unicode" não estiver selecionada. (ver Página Compatibilidade)

Nota: se forem utilizados caracteres não romanos nos nomes dos identificadores, seu tamanho máximo pode ser menor.)

Tenha certeza de utilizar nomes únicos para os diferentes elementos de seu banco de dados. Se um objeto determinado tiver o mesmo nome que outro objeto de um tipo diferente (por exemplo, se um campo se denominar Person e uma variável também se denomina Person), 4D utiliza um sistema de prioridade.

4D identifica os nomes usados em procedimentos na seguinte ordem:

1. Campos
2. Comandos
3. Métodos
4. Rotinas de plug-ins
5. Constantes predefinidas
6. Variáveis.

Por exemplo, 4D tem um comando built-in chamado Data. Se você nomear um método de Data, 4D reconheceria-o como o comandoDate. interno, e não como o seu método. Isso impedirá que você chame seu método. Se, no entanto, você nomear um campo como "Data", 4D tentaria usar o seu campo ao invés do comando Date.



Ver também 

Arrays
Constantes
Métodos
Operadores
Ponteiros
Tipos de dados
Variáveis

 
PROPRIEDADES 

Produto: 4D
Tema: Apresentação da linguagem

 
HISTÓRIA 

 
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)