Saltar para o conteúdo principal
Versão: 20 R5 BETA

Editor de método

4D tem um poderoso editor de código embutido que oferece um amplo conjunto de funcionalidades para edição de código altamente produtiva, como preenchimento inteligente de código, navegação de código, depuração, busca, e mais.

O editor de código funciona de forma semelhante a um editor de texto. Escrever um método ou uma classe é geralmente uma combinação de digitar texto, selecionar componentes e arrastar itens do Explorador ou de outras janelas. Você também pode usar várias funções de preenchimento automático para criar métodos mais rapidamente.

You can scroll through the contents of methods, classes and functions, which can include up to 32,000 lines of code or 2 GB of text.

O Editor de código 4D fornece verificação básica de erros de sintaxe. É efetuada uma verificação de erros adicional quando o código é executado. Para más información sobre cómo gestionar los errores, consulte Depuración.

Interface

Barra de ferramentas

Each Code Editor window has a toolbar that provides instant access to basic functions related to code execution and editing.

ElementoÍconeDescrição
Execução do métodoexecute-methodWhen working with methods, each Code Editor window has a button that can be used to run the current method. Using the menu associated with this button, you can choose the type of execution:
  • Run new process: Creates a process and runs the method in standard mode in this process.
  • Run and debug new process: Creates a new process and displays the method in the Debugger window for step by step execution in this process.
  • Run in Application process: Runs the method in standard mode in the context of the Application process (in other words, the record display window).
  • Run and debug in Application process: Displays the method in the Debugger window for step by step execution in the context of the Application process (in other words, the record display window).
For more information on method execution, see Calling Project Methods.
Find in methodsearch-iconDisplays the Search area.
Macrosmacros-buttonInsere uma macro na seleção. Clique na seta pendente para visualizar uma lista de macros disponíveis. Para obtener más información sobre como crear e instanciar macros, consulte Macros.
Expand all / Collapse allexpand-collapse-buttonThese buttons allow expanding or collapsing all the control flow structures of the code.
Method informationmethod-information-iconMuestra el diálogo Propiedades del método (sólo métodos proyecto).
Last clipboard valueslast-clipboard-values-iconExibe os últimos valores armazenados na área de transferência.
Clipboardsclipboard iconsNove pranchetas disponíveis no editor de código. Puede utilizar estos portapapeles haciendo clic directamente sobre ellos o utilizando atajos de teclado. Puede utilizar la opción Preferencias para ocultarlas.
Navigation dropdowncode-navigation-iconsLets you navigate inside methods and classes with automatically tagged content or manually declared markers. Ver abaixo

Área de edição

É aqui que escreve e edita o seu código. The editor automatically indents code text and colors the different syntax elements for clear code structure.

É possível personalizar a apresentação da área de edição. Qualquer personalização é automaticamente passada para todas as janelas do editor de código:

OpçãoDescriçãoDefinido em...
fuente y tamaño de la fuenteDefine o tipo de letra e o tamanho dos caracteres a utilizar na área de ediçãoPreferences > Methods or Method > View > Bigger Font or Smaller Font
style and color of syntax elementsatribui uma cor e/ou estilo específicos a cada tipo de elemento da linguagem 4D. Você também pode alterar as diferentes cores usadas na interface da área de edição (destaque, fundo, etc.).Right-click on a language element (variable, keyword, etc.) Right-click on a language element (variable, keyword, etc.) > Style submenu. > Submenú Estilo. Or Preferences > Methods
spacesYou can display the spaces between words using dots (.) instead of blank spaces. This option applies to all the code elements (command names, variables, comments, etc.).Method > View > White Spaces
themesPode selecionar o tema Escuro ou Claro, ou definir um tema personalizadoPreferences > Methods
width of code indentationsDefinir a largura das indentações do códigoPreferences > Methods

Mudar barras

Colored bars instantly show you where lines of code were modified since the method was opened:

The change bars change colors to indicate whether or not the modifications were saved:

  • amarelo: a linha foi modificada e o método ainda não foi guardado.
  • verde: A linha foi modificada e o método foi guardado.

Área listas

The lists area lets you display one or more lists of elements necessary for writing methods and classes (commands, constants, forms, etc.). You can choose the number and contents of the lists displayed in the window.

Por padrão, o editor de código apresenta quatro listas. You can hide or show all lists by clicking on the icon at the botton right of the window.

You can enlarge or reduce the relative width of each list area by dragging one of its partitions. It is also possible to adjust the size of the list area in relation to that of the editing area by dragging the dividing line between them.

  • Double-clicking on an item in a list causes it to be inserted into the editing area, at the location of the cursor.
  • Para modificar el contenido de una lista, haga clic en el área del título de la lista en cuestión: aparecerá un menú emergente que le permitirá elegir el tipo de elemento que desea visualizar.

  • To add or remove a list, click in the title area of one of the lists and choose the corresponding command in the pop-up menu. El comando Eliminar esta lista se desactiva al hacer clic en la última lista. Si desea ocultar todas las listas, debe hacer clic en el botón mostrar u ocultar listas situado en la parte inferior derecha de la ventana u ocultarlas por defecto en las Preferencias.

  • Pode ocultar as listas em todas as janelas das seguintes formas:

    • Seleccione la opción Ver > Listas en el menú Método (una marca de verificación indica si se muestran las listas)
    • For practical reasons, you can disable the automatic display of the list of suggestions for constants, (local or interprocess) variables and object attributes and/or tables. These options are found in Preferences > Methods > Options

Listas de itens disponíveis

You can display the following lists of items in the lists area of the Code Editor window:

  • Todas las tablas y campos: nombres de tablas y campos de la base de datos en forma de lista jerárquica. When you insert a field name into the method by double-clicking on its name, 4D inserts it while respecting the syntax and adds the name of the table or subtable as the case may be.
  • Tabla (submenú): nombres de los campos de la tabla seleccionada utilizando el submenú.
  • Tabla actual: nombres de campo de la tabla actual (disponibles en triggers, métodos de formulario y métodos de objeto).
  • Formularios proyecto: nombres de formularios proyectos de bases de datos. When you double-click on a project form name, 4D inserts its while respecting the syntax: the form name is inserted between quotes.
  • Formularios tabla: nombres de tablas y formularios de la base de datos en forma de lista jerárquica. When you insert a form name into a method by double-clicking its name, 4D inserts it while respecting the syntax: the form name is inserted between quotes and is preceded by the name of the table and a semi-colon. Por exemplo: [Table]; "Form".
  • Métodos: nombres de los métodos proyecto de la base de datos.
  • Todas las carpetas: nombres de carpetas y subcarpetas de objetos definidos en la base de datos mostrados en forma de lista jerárquica. As pastas podem ser utilizadas para organizar objetos de uma forma personalizada. São geridos a partir da página inicial do explorador.
  • Carpetas (submenú): contenido de la carpeta seleccionada utilizando el submenú.
  • Macros: nombres de macros definidos para la base de datos (ver Creación y utilización de macros).
  • Comandos: vomandos del lenguaje 4D por orden alfabético.
  • Comandos por temas: comandos del lenguaje 4D clasificados por temas en forma de lista jerárquica.
  • Barras de menú: nombres y números de las barras de menú creadas con el editor de barras de menú 4D.
  • Constantes: constantes 4D y de los posibles plug-ins, clasificadas por temas en forma de lista jerárquica.
  • Listas: nombres de listas.
  • Todos los comandos de los plug-ins: comandos para todos los plug-ins instalados en la base de datos (si los hay), clasificados por temas en forma de lista jerárquica.
  • Palabras clave SQL: conjunto de palabras clave reconocidas por el analizador sintáctico de 4D SQL. This list includes commands (e.g. SELECT), clauses (e.g. WHERE) as well as functions (ABS).
  • Funciones SQL: Funciones SQL 4D.

Nota: excepto para el elemento Macros, todas las listas están en orden alfabético.

Guardar como modelo

You can save the lists set in the Code Editor window in the form of a template. Once the template is saved, the parameters set in it will be used for each new Code Editor window that is opened.

Os seguintes parâmetros são armazenados no modelo:

  • Tamanho relativo das áreas de edição e de lista
  • Número de listas
  • Localização e conteúdo de cada lista
  • Largura relativa de cada lista

Para guardar una ventana del Editor de código como plantilla, seleccione Método > Guardar como plantilla. O modelo é guardado imediatamente (não aparece nenhuma caixa de diálogo). Se guarda en la página Preferencias de la aplicación 4D. Se já existir um modelo anterior, ele será substituído.

Área de pontos de paragem

This area, located to the left of the editing area, allows you to display the line numbers and to insert break points directly next to specific instructions. Os pontos de interrupção são úteis durante a fase de depuração de sua programação. They stop the execution of your code at specific locations and display the debugger.

Para obtener más información sobre los puntos de interrupción, consulte la sección Depurador.

You can display or hide the line numbers in the break points area for each window of the Code Editor.

  • Para activar o desactivar la visualización de los números de línea por defecto, seleccione Preferencias > Métodos > Mostrar números de línea.
  • Para modificar esta visualización por separado para cada ventana del Editor de Código, elija Método > Ver > Números de línea.

Displaying the line numbers makes it easier to find your way around in the window. **Método ** > Ir al número de línea... también le permite aprovechar esta visualización.

Este tipo de búsqueda es útil cuando se utiliza junto con el compilador, que señala los errores de ejecución por el número de línea en el que se producen.

Barra de estado

The status bar located at the bottom right part of the editor window displays the position of the cursor at all times:

  • Ln: número de línea
  • Col: número de columna, es decir, el nivel en la jerarquía de las estructuras de programación. O primeiro nível é 0. The column number is useful for debugging since this information can be provided by the interpreter in the event of an error in the code.
  • Ch: ubicación del caracter en la línea.
  • : Hide/display lists.

When you set the cursor in a command, function or parameter(s), the status bar displays the syntax of the command. If you write or select a parameter, the area shows the current parameter in bold:

The navigation dropdown helps you organize your code and navigate more easily inside your classes and methods:

dropdown-list

Algunas etiquetas se añaden automáticamente y puede complementar la lista desplegable utilizando los marcadores .

Click an item in the dropdown list to go to its first line in the code. También puede navegar con las teclas de flecha y presionar Intro.

Marcação automática

Constructors, method declarations, functions and computed attributes are automatically tagged and added to the dropdown list.

Quando não existe uma etiqueta na classe/método, a ferramenta apresenta "Sem etiqueta".

Os seguintes itens são adicionados automaticamente:

ÍconeElemento
no-tag-iconSem etiqueta
constructor-iconClass constructor ou declaração de método
computed-attribute-iconAtributo calculado (get, set, orderBy e query)
function-iconNome da função de classe

Marcação manual

Ao adicionar marcadores no seu código, pode adicionar as seguintes etiquetas ao menu pendente:

ÍconeElemento
mark-tag-iconMARK: etiqueta
todo-tag-iconTODO: etiqueta
fixme-iconFIXME: etiqueta

Declara-os acrescentando comentários como:

// FIXME: Correção dos seguintes itens

Las declaraciones no distinguen entre mayúsculas y minúsculas; escribir fixme: tiene el mismo efecto.

Añadir un guión después de la etiqueta MARK: dibuja una línea de separación en el editor de código y en el menú desplegable. Por isso, estou a escrever isto:

mark-hyphen-image

Os resultados são os seguintes:

mark-hyphen-image

Todos los marcadores situados dentro de las funciones tienen sangría en la lista desplegable, excepto las etiquetas MARK: situadas al final de las funciones y no seguidas de instrucciones. Estes aparecerão no primeiro nível.

Ordem de visualização

As etiquetas são exibidas em sua ordem de aparecimento dentro do método/classe.

To display the tags of a method or class in alphabetical order, do one of the following:

  • haga clic derecho en la herramienta desplegable
  • mantenga Cmd en macOS o Alt en Windows, y haga clic en la herramienta de lista desplegable

As etiquetas em funções movem-se com os seus itens pais.

Atalhos

Multiple features of 4D's Code Editor are available through default keyboard shortcuts.

macOS

En macOS, utilice la tecla Command en lugar de la tecla Ctrl mencionada (Windows).

ShortcutAction
Selection and navigation
Duplo cliqueSelecionar o nome de um elemento da linguagem
[Alt]+Clique duas vezesSelecionar um nome de elemento de língua contendo espaços (constante, método, etc.)
[Shift]+[seta para a direita]Create and enlarge the selection, character by character, to the right, or Reduce the selection, character by character, from the left
[Shift]+[seta para a esquerda]Reduce the selection, character by character, from the right or Create and enlarge the selection, character by character, to the left
[Shift]+[seta para baixo]Create and enlarge a selection, line by line, from the top to the bottom
[Shift]+[seta para cima]Create and enlarge a selection, line by line, from the bottom to the top
[Ctrl]+[Shift]+[seta para a direita]Criar e ampliar a seleção, palavra a palavra, a partir da direita
[Ctrl]+[Shift]+[seta para a esquerda]Reduce the selection, word for word, from the right, or create and enlarge the selection, word by word, from the left
[Ctrl]+[seta para a direita]Mover o ponto de inserção, palavra a palavra, da esquerda para a direita
[Ctrl]+[left arrow]Mover o ponto de inserção, palavra a palavra, da direita para a esquerda
[Alt]+[seta para baixo]Mover a(s) linha(s) onde se encontra o cursor para a parte inferior
[Alt]+[seta para cima]Mover a(s) linha(s) onde se encontra o cursor para o topo
[Home]Posicione o ponto de inserção no início da linha
[End]Colocar o ponto de inserção no fim da linha
[Ctrl]+[Home]Colocar o ponto de inserção no início do método
[Ctrl]+[End]Colocar o ponto de inserção no final do método
[Shift]+[Home]Select all the characters in the line that are to the left of the cursor
[Shift]+[End]Select all the characters in the line that are to the right of the cursor
[PgUp]Scroll the contents of the method, page by page, from the bottom to the top (doesn't modify the insertion point)
[PgDn]Scroll the contents of the method, page by page, from the top to the bottom (doesn't modify the insertion point)
Introspection
[Ctrl]+K ou [Alt]+clique duas vezesSame as Goto definition command
[Ctrl] (Windows) or [Alt] (macOS)+hovering over a tokenSublinhar o token (elemento linguístico identificado). Click on the underlined token = same as Goto definition command
Find and replace
[Ctrl]+FFind
[Ctrl]+GEncontrar o próximo
[Ctrl]+[Shift]+GProcurar Anterior
[Ctrl]+EEncontrar o mesmo próximo
[Ctrl]+[Shift]+EEncontrar o mesmo anterior
[Ctrl]+[Alt]+FSubstituir
[Ctrl]+[Alt]+GSubstituir próximo
[Ctrl]+[Alt]+[Shift]+GReemplazar anterior
Clipboards
[Shift]+clique ou [Alt]+clique no ícone da área de transferênciaCopiar texto selecionado para uma área de transferência
[Ctrl]+[Shift]+tecla numéricaCopiar texto selecionado numa área de transferência numérica
[Ctrl]+clique no ícone da área de transferênciaColar o conteúdo de uma área de transferência na localização do cursor
[Ctrl]+chave numéricaColar o conteúdo da área de transferência numérica na localização do cursor
tip

La mayoría de estos atajos pueden personalizarse en la caja de diálogo Preferencias 4D.

Editar código

4D uses standard text editing techniques for typing and editing in the Code Editor.

The Code Editor uses display conventions (style, color) for the syntax elements. Puede personalizar estas convenciones. As you type, when you validate your entry, 4D evaluates the text of the line and applies the appropriate display format. 4D also indents each line to its proper level in relation to the preceding line when you use programming structures (If, End if...).

Pode utilizar as teclas de setas para se deslocar rapidamente de uma linha para outra. Using the arrow keys to move across several lines is quicker than clicking because the editor delays evaluating the line for errors.

Under Windows, the code editor includes an Input Code Editor (IME) to facilitate code editing on Japanese or Chinese systems.

El Editor de código incluye numerosos atajos de navegación.

Uso de la barra invertida

El carácter barra invertida (\) tiene un soporte específico en el lenguaje 4D:

caution

El caracter de barra invertida (\) se utiliza como separador en los nombres de ruta en Windows. In general, 4D will correctly interpret Windows pathnames entered in the Code Editor by replacing the single backslash with a double backslash. Por ejemplo, C:\MyDocuments se convertirá en C:\\MyDocuments. However, if you write "C:\MyDocuments\New", 4D will display "C:\\MyDocuments\New". In this case, the second backslash is interpreted incorrectly as \N (an existing escape sequence). You must therefore enter a double backslash when you want to have a backslash in front of a character used in one of the escape sequences recognized by 4D.

Arrastar e largar

From the Explorer, you can drag and drop tables, fields, forms, project methods, constants, or 4D commands. Quando você arrasta e solta um elemento, 4D sempre usa a sintaxe correta. Por ejemplo, si arrastra el nombre del campo First Name [People], aparecerá en el Editor de código como [People]First Name. Del mismo modo, si arrastra el nombre del formulario Entrada desde la tabla People, aparecerá en el Editor de Código como [People];"Input".

Cuando inserta un comando arrastrándolo desde la página Comandos del Explorador, aparece con su sintaxis (que consiste en todos sus parámetros) en el Editor de Código. This feature simply reminds you of the parameters that the command expects. Assim, você pode usar uma sintaxe mais adequada ao seu uso.

In the Code Editor, the drag-and-drop mechanism is activated as soon as a portion of text is selected. You can also drag-and-drop within a method, class, function or between two different ones. Por defecto, el mecanismo de arrastrar y soltar mueve el texto seleccionado. Para copiarlo, mantenga presionada la tecla Ctrl (Windows) o la tecla Opción (macOS) durante la operación.

Alternância entre letras maiúsculas e minúsculas

Puede modificar automáticamente las mayúsculas y minúsculas de los caracteres seleccionados utilizando los comandos en Métodos > Mayúsculas y minúsculas o el menú contextual del editor:

  • Mayúsculas / Minúsculas: cambia los caracteres seleccionados a mayúsculas o minúsculas.
  • cameyúsculas / cameyúsculas: cambia los caracteres seleccionados a "cameyúsculas". This consists in changing each first letter of a group of attached words to uppercase. Este tipo de notação é frequentemente utilizado para as nomenclaturas de variáveis. hireDate e PurchaseDate são exemplos de duas variantes da notação camel case.

When you apply one of these commands to a text selection, the spaces and "_" characters are removed and the first letter of each word becomes uppercase.

Trocar expressão

La función cameyúsculas puede utilizarse para invertir los argumentos de una expresión que asigna un valor. Por exemplo,

variable1:=variable2

torna-se

variable2:=variable1

This function is extremely useful for reversing a set of assignments used to get or set properties, or to correct input errors. Within the selection, only the lines assigning a value will be modified. Within the selection, only the lines assigning a value will be modified.

Pranchetas

In addition to the standard copy-paste operation, 4D offers two additional functions that let you work with the contents of different clipboards:

  • The program stores the last 10 "copy" or "cut" actions that were performed in the Code Editor in memory during the current session. Each of the different contents saved in this way can be reused at any time. Para ello, utilice el comando Historial del Portapapeles del menú contextual del Editor de Código o el botón "Últimos valores del Portapapeles" de la barra de herramientas:

    São apresentadas as primeiras palavras dos itens copiados ou cortados. Selecione um item para inseri-lo no local atual do cursor.

  • Dispone de nueve portapapeles numerados adicionales que pueden emplearse directamente mediante los botones de la barra de herramientas del Editor de código o utilizando atajos de teclado:

Linhas em movimento

Puede mover la línea donde está el cursor directamente sin seleccionarla primero utilizando los comandos Mover líneas hacia arriba y Mover líneas hacia abajo del menú Método. También puede hacerlo utilizando el atajo de teclado Alt/Opción + Flecha arriba o Flecha abajo .

Funções de preenchimento automático

O editor de código fornece funções de preenchimento automático. 4D exibe automaticamente sugestões baseadas nos primeiros caracteres digitados.

In the example given below, typing the string "cop" causes the display of a blue triangle indicating that several suggestions are available:

When the characters you enter correspond to a single possibility, this suggested value appears greyed out (and is inserted if you hit the Tab key): --->

If you checked the Insert () and closing } ) ] " option in the Methods page of the Preferences, 4D will also automatically add () after a 4D command, keyword or project method that requires one or more mandatory arguments (after accepting a suggestion or completion): ->

Autocompletion also works with code structures (e.g. If..End if, For each...End for each): when you enter the first part of the structure, the Code Editor will automatically suggest the closing part:

Si hay varias sugerencias disponibles, 4D las muestra en una lista emergente al presionar la tecla Tab:

A lista está por ordem alfabética. Elija el valor haciendo doble clic en él o desplácese por la lista utilizando las teclas de flecha del teclado y, a continuación, presione Intro, Retorno de carro o Tab para insertar el valor seleccionado.

Por defecto, también puede insertar un valor sugerido presionando uno de los siguientes delimitadores ( ; : = < [ { teclas después de seleccionar un valor: el valor insertado va seguido del delimitador, listo para la entrada de datos.

+ ( key -->

Puede desactivar el uso de delimitadores para insertar valores sugeridos en Preferencias > Métodos > Opciones.

Puede presionar la tecla Esc para cerrar la lista emergente o puede seguir escribiendo mientras está abierta. The values suggested in the pop-up list are updated as additional characters are typed.

If the characters typed correspond to different types of objects, the list displays them in their current style. Podem ser visualizados os seguintes tipos de objetos:

  • Comandos 4D
  • Comandos SQL
  • Métodos utilizador
  • Nomes de tabelas
  • Nomes de campos
  • Constantes
  • Variables declared in the method
  • Nomes de propriedade de objeto
  • Comandos Plug-in
  • Palavras-chave 4D
  • Palavras-chave SQL
  • Macros (apresentadas entre < >)

For practical reasons, you can disable the automatic display of the list of suggestions for constants, (local or interprocess) variables and object attributes, tables and/or prototypes. Estas opciones se encuentran en Preferencias > Métodos > Opciones

Nomes de propriedade de objeto

4D automatically displays case-sensitive suggestions of all valid object property names in 4D code when you:

  • digite um ponto "." depois de um objeto ou
  • utilizar la tecla Tab después de un puntero objeto desreferenciado "->".

La propiedad length se incluye siempre para su uso con colecciones.

Once created, property names are stored in an internal global list and are available anytime a method/class/function is opened, closed or changes focus.

A lista de sugestões é atualizada dinamicamente enquanto você edita o código. When switching between windows, new/edited property names are always added to the global list. The list is also updated when you preview a method, class or function in the Explorer.

Quando o banco de dados é reiniciado, a lista é reinicializada.

Puede desactivar la visualización automática de las propiedades de los objetos en Preferencias > Métodos > sugerencias.

Procurar e substituir

El editor de código dispone de poderosas funcionalidades de buscar y reemplazar que se aplican a la ventana actual.

A search and replace area can be displayed in the toolbar of any method window:

search-area

To display this area, click on the Find in method icon of the toolbar or select a find or replace function either through a shortcut or a command from the Edit > Find submenu. Puede cerrar esta áreaa en cualquier momento presionando el botón x situado en el extremo derecho de la barra de herramientas.

tip

La función Buscar en diseño de la barra de herramientas de 4D o del menú Editar no es específico del editor de código, pero puede utilizarse para buscar un valor entre todos los métodos y clases.

Find

Seleccione Buscar > Buscar... en el menú Editar o escriba Ctrl+F (Windows)/Cmd+F (macOS) para mostrar/activar el área Buscar.

The search defined in this area will be performed in the code located in the window.

El área de entrada buscar permite introducir la cadena a buscar. This area is a combo box that stores the last 10 strings that have been searched for or replaced during the session. Si resalta el texto antes de elegir el comando Buscar..., aparecerá en esta área. Pode então utilizar este texto ou substituí-lo por outro.

Once a string is entered or selected, all occurrences found in the opened window are highlighted and the right side of the area displays the total number of hits found. Também indica a posição atual do cursor entre todos os resultados.

Presione la tecla Intror para seleccionar la ocurrencia más cercana al cursor. You can also click on the Next / Previous buttons find-next-previous to select all occurrences sequentially towards the beginning or end of the current method, starting from the initial location of the cursor, or use the Find Next and Find Previous commands of the Edit menu.

Opções

  • Case Sensitive case-sensitive: Take the case of characters as they were entered in the find area into account. Essa opção também considera os caracteres diacríticos. For instance, a search for "MyVar" will not find "myVar"; a search for "dej" will not find "déjà".
  • Whole Word full-word: Limit the search to exact occurrences of the word being searched for. When this option is checked, for instance, a search for "client" will not find either "clients" or "myclient." When this option is checked, for instance, a search for "client" will not find either "clients" or "myclient."

Substituir

Haga clic en el botón de alternancia v situado a la izquierda del área Buscar para mostrar/ocultar el área Reemplazar. También puede seleccionar Buscar > Reemplazar... en el menú Editar o escribir Ctrl+Alt+F (Windows)/Cmd+Alt+F (macOS).

El área de entrada Reemplazar se utiliza para definir la cadena de caracteres que sustituirá a la definida anteriormente.

Haga clic en el botón Reemplazar para iniciar la búsqueda con todas las opciones definidas y reemplazar la primera ocurrencia encontrada. 4D begins searching from the current text insertion point and continues to the end of the method. It is then possible to continue finding/replacing using the Replace Next and Replace Previous commands of the Edit menu.

Haga clic en el botón Reemplazar todo para reemplazar todas las ocurrencias correspondientes a los criterios de búsqueda directamente en el método abierto.

Encontrar o mesmo

El comando Buscar el mismo se utiliza para buscar cadenas de caracteres idénticas a la seleccionada. This command is only active if you have selected at least one character in the Code Editor.

The search carried out is of the "Find Next" type in the current code editor window.

Los comandos Find Same Next y Find Same Previous se utilizan para encontrar cadenas de caracteres estrictamente idénticas a las seleccionadas. Por exemplo, as maiúsculas e minúsculas devem corresponder.

Marcar tudo

El comando Editar > Marcar todo se activa cuando ya se ha especificado una búsqueda en la caja de diálogo buscar o reemplazar. When you select this command, 4D puts a bookmark at each line that contains an item corresponding to the "current" search criteria. Deste modo, é fácil identificar todos os resultados da pesquisa. Para más información sobre marcadores, consulte Marcadores.

Avisos e erros

Thanks to the 4D Code Live Checker, the syntax, consistency, and structure of the entered code are automatically checked in order to prevent execution errors. For example, the Code Live Checker can detect that a right parenthesis is missing or that you used an unknown dataclass attribute.

The Code Live Checker is activated at three levels:

4D verifica automaticamente a sintaxe do código para ver se está correta. If you enter text or select a component that is not correct, 4D displays a symbol to indicate the incorrect expression.

Dois tipos de símbolos são exibidos:

  • warnings warning: Warnings are intended to draw your attention to statements that might lead to execution errors. Não impedem a compilação.
  • errorserror: errors are anomalies that prevent the code from being executed correctly. Eles devem ser corrigidos, caso contrário o projeto não será compilado.

When you move the mouse over the symbol, a help tip displays the cause of the error:

O Verificador de código ao vivo é ativado enquanto você insere o código. When a line of a method, class or function is marked as having improper syntax, check and fix the entry. Se a linha estiver correta, 4D removerá o símbolo de erro. Quando salvar ou fechar a janela, todo o método é validado.

Puede formatear la línea actual (sin avanzar a la línea siguiente) presionando la tecla Intro del teclado numérico. 4D evaluates the line, formats it, marks any errors, and places the insertion point at the end of the line.

The Code Live Checker checks for:

  • erros básicos de sintaxe (operadores errados, erros de ortografia e similares)
  • la estructura de las instrucciones (If, End if y así sucesivamente)
  • matching enclosing characters in the code such as parentheses or brackets (see tip below)
  • the calls of attributes and functions according to your model (ORDA) and user class definitions. For example, the Code Live Checker generates an error when a call to a dataclass computed attribute is not compatible with the declared computed attribute type.
tip

When you type an enclosing character, 4D indicates the match by framing the start/end characters with gray rectangles by default:

You can modify the way 4D indicates matching enclosing characters or disable this feature in the Preferences.

The Code Live Checker cannot detect some errors that only occur during execution. Erros de execução são capturados por 4D quando o código é executado. Sin embargo, tenga en cuenta que el compilador también proporciona una ayuda indispensable para detectar errores.

Dicas de ajuda

O Editor de código fornece várias informações contextuais utilizando dicas de ajuda. Aparecem quando se passa o rato por cima de um objeto.

tip

La barra de estado también ofrece información contextual.

  • Errores: al pasar el ratón sobre el símbolo que indica un error a la izquierda del área de edición, aparece un consejo de ayuda que muestra la causa del error (ver Errores de sintaxis).

  • Documentación de comandos 4D: al pasar el ratón sobre un comando o función 4D, un mensaje de ayuda ofrece su sintaxis junto con una breve descripción de su funcionamiento.

  • Tipo de variable y descripción: al pasar el ratón sobre una variable, un mensaje de ayuda muestra su tipo (si se ha definido explícitamente en el método) y el comentario asociado, si existe.

  • Métodos o funciones proyecto: al pasar el ratón sobre un método proyecto o función clase, aparece un mensaje de ayuda:

    • ou os comentários especificados no Explorador.
    • o las primeras líneas del método o función de clase si incluye comentarios (líneas que empiezan por // o /.../ bloque de comentarios). It is common practice to insert documentation for the method as well as its parameters in the form of comments at the beginning of the method. You can get this information directly in the help tip, just make sure to first remove any comments found in the Explorer. Comments at the beginning of a method: Help tip in another method:
  • También puede crear un archivo de documentación dedicado llamado <MethodName>.md en la carpeta <package>/documentation. Ver Visualización de la documentación en el editor de código

Comentar / Não comentar

El lenguaje 4D soporta los comentarios, que son líneas de código inactivas. O editor de código não aplica nenhum estilo específico nos comentários. The length of comments is limited to the maximum size of 32,000 characters per line.

Existen dos tipos de comentarios: //comment (comentario de una línea) y /*comment*/(comentarios en línea o bloques de comentarios multilínea).

Se pueden crear comentarios digitando los caracteres /. Or, the Comment/Uncomment command, found in the Method menu as well as in the Code Editor context menu is used to mark a group of selected lines of code as single line comments, or, on the contrary, to remove the single line comment characters from a selection. Para utilizar este comando, seleccione el código que desea marcar como comentado y, a continuación, seleccione el comando Comentar/Descomentar:

-->

Cuando la selección sólo contiene código activo, se aplica el comando Comentario. Or, the Comment/Uncomment command, found in the Method menu as well as in the Code Editor context menu is used to mark a group of selected lines of code as single line comments, or, on the contrary, to remove the single line comment characters from a selection. Cuando la selección contiene sólo líneas comentadas, se aplica el comando Descomentar.

El comando Comentar/Descomentar sólo funciona con líneas completas --- no puede utilizarse para comentar sólo parte de una línea.

Expandir / Recolher

4D code located inside loops and conditions can now be collapsed or expanded, in order to facilitate the reading of methods:

  • Expanded code:

  • Collapsed code:

If you place the mouse over the expand button [...], a help tip appears, displaying the first lines of the hidden code.

A collapsed portion of code can be selected, copied, pasted or deleted. Todas as linhas incluídas nesse documento serão copiadas, coladas ou excluídas, respectivamente. Quando uma parte do código é colada, é automaticamente expandida.

Existem várias formas de expandir e recolher código:

  • Click on the expand/collapse icons ([+] and [-] under Windows) or on the opening button [...]

  • Utilice los comandos del submenú Método > Contraer/Expandir:

    • Contraer selección / Expandir selección: contrae o expande todas las estructuras de código que se encuentran en la selección de texto.
    • Contraer nivel actual / Expandir nivel actual: contrae o expande la estructura del código en el nivel en el que se encuentra el cursor. Estos comandos también están disponibles en el menú contextual del editor.
    • Contraer todo / Expandir todo: contrae o expande todos los bucles y condiciones de un método. Estes comandos também estão disponíveis na barra de ferramentas do editor.

Blocos

Os blocos podem ser definidos por:

  • Aspas
  • Parênteses
  • Uma estrutura lógica (If/Else/End if, While/End while, Repeat/Until Case of/End case)
  • Parêntesis

Selecionar bloco envolvente

La función Seleccionar bloque envolvente se utiliza para seleccionar el "bloque envolvente" del código que contiene el punto de inserción.

If a block of text is already selected, the function selects the enclosing block of the next highest level and so on, until the entire method is selected.

Si presiona Ctrl+Mayús+B (Windows) o Comando+Mayús+B (macOS), podrá invertir esta operación y anular la selección del último bloque delimitador seleccionado.

Nota: si el punto de inserción se sitúa en una estructura de tipo If o Else, el bloque que lo encierra será el que contenga, respectivamente, la sentencia If o Else.

Início do bloco ou fim do bloco

Dos comandos facilitan el desplazamiento dentro de estructuras de código (por ejemplo, If...Else...End if):

  • Inicio de bloque: sitúa el cursor al final de la estructura actual, justo después de la palabra clave inicial.
  • Fin de bloque: sitúa el cursor al final de la estructura actual, justo después de la palabra clave final.

Estos comandos se encuentran en el menú Método, así como en el menú contextual del editor. Também pode utilizar os seguintes atalhos:

  • Windows: Ctrl + flecha arriba o Ctrl + flecha abajo'
  • macOS: Comando + flecha arriba o Comando +flecha abajo.

Marcadores

4D permite que você associe marcadores a certas linhas em seus métodos. You can then browse quickly within the code by passing from one bookmark to another using specific commands.

A bookmark moves along with its original row if additional rows are inserted in the method. Os marcadores são guardados com os métodos.

Los marcadores se gestionan utilizando el submenú Marcadores del menú Método:

  • Alternar: asocia un marcador a la línea actual (donde se encuentra el cursor) si no tiene ya uno o elimina el marcador existente si lo tiene. Esta función también está disponible utilizando el comando Alternar marcador del menú contextual del editor o utilizando el atajo de teclado Ctrl+F3 (Windows) o Comando+F3 (macOS).
  • Eliminar todo: elimina todos los marcadores de la ventana en primer plano.
  • Ir al siguiente / Ir al anterior: permite navegar entre los marcadores de la ventana. Selecting one of these commands places the cursor on the first character of the line associated with the bookmark concerned. También puede utilizar los atajos de teclado F3 (ir a la siguiente) o Mayús+F3 (ir a la anterior).
info

Puede utilizar marcadores como señalizadores de líneas que contengan un elemento encontrado mediante una búsqueda. Neste caso, 4D adiciona automaticamente os marcadores. Para más información, consulte Marcar todos.

Revelar no Explorador

El comando Revelar en el Explorador... abre una ventana del Explorador con el elemento de destino seleccionado. Para ello, coloque el cursor dentro del nombre del elemento o selecciónelo y, a continuación, elija Método > Revelar en el Explorador....

Pesquisar chamadores

El comando Buscar los llamantes del menú Método solo está habilitado para métodos proyecto. It searches for all the objects (other methods or menus) that reference the project method.

Selecting the Find... command displays the following dialog box:

Este comando apresenta os seus resultados numa nova janela.

Ir para Definição

El comando Ir a definición abre la definición de un elemento referenciado en el Editor de Código. Para ello, coloque el cursor dentro del nombre del objeto o selecciónelo, y elija Método > Ir a Definición... o utilice el menú contextual del editor.

tip

Esta funcionalidad también está disponible a través del atajo de teclado Ctrl+K (Windows) / Command+K (macOS) o Alt+doble clic.

El efecto del comando Ir a definición... varía en función del elemento de destino:

  • with a project method, it displays the contents of the method in a new window of the Code Editor
  • com um nome de classe ou função classe, ele abre a classe no Editor de código
  • with a built-in 4D command or function, it has the same effect as the Show documentation command.

Mostrar documentação

El comando Mostrar documentación... abre la documentación del elemento de destino. Para ello, coloque el cursor dentro del nombre del elemento o selecciónelo y, a continuación, elija Método > Mostrar documentación... o utilice el menú contextual. O efeito varia consoante o elemento alvo. Por exemplo:

  • Selecting a project method or a user class and choosing Show documentation... selects the method in the Explorer and switches to the documentation tab
  • Al seleccionar un comando, función o nombre de clase 4D y elegir Mostrar documentación... se muestra la documentación en línea.
  • Si no se selecciona ningún elemento, el comando abre la documentación del método actualmente abierto en el Editor de Código, si existe.
tip

Para mostrar la documentación de un comando del lenguaje "clásico" 4D, seleccione el nombre del comando o simplemente sitúe el cursor en el nombre y presione F1. The documentation of the command is displayed in a new window of your default browser. 4D busca la documentación en función de los ajustes realizados en las Preferencias (ver Ubicación de la documentación).

Pesquisar referências

El comando Buscar Referencias... que se encuentra en el menú Método o en el menú contextual del Editor de Código encuentra todos los objetos (métodos y formularios) del proyecto en los que el elemento actual del método está referenciado (utilizado

The current item is either the one selected or the one where the cursor is located. Pode ser um nome de campo, nome de variável, comando, cadeia de caracteres e assim por diante. For example, the following action looks for all the occurrences of the vlNbCmd variable in the database:

find-dialog

Este comando apresenta os seus resultados numa nova janela.

Macros

Pode utilizar macro-comandos nos seus métodos. A utilização de macro-comandos poupa muito tempo durante a introdução de código.

Um macro-comando é uma secção de código 4D que está permanentemente acessível e que pode ser inserida em qualquer lugar nos seus métodos, qualquer que seja o tipo de base de dados aberta. As macros podem conter todos os tipos de texto, comandos e constantes 4D, bem como etiquetas especiais que são substituídas no momento da inserção da macro por valores derivados do contexto do método. Por ejemplo, una macro puede contener la etiqueta <method_name/>; en el momento de la inserción de la macro, esta etiqueta será sustituida por el nombre del método proyecto actual.

As macros são armazenadas num ou mais ficheiros de formato XML (texto). Podem ser colocados numa lista do editor de código; também podem ser chamados através do menu de contexto do editor ou através da função de preenchimento automático.

As macros 4D são escritas em formato XML. Pode usar o ficheiro macro padrão 4D como está ou modificá-lo.

Localização das macros

4D carga las macros desde una carpeta llamada Macros v2. As macros devem estar na forma de um ou mais ficheiros XML que são colocados nesta pasta.

A pasta "Macros v2" pode ser localizada:

  • Na pasta 4D ativa da máquina. As macros são então partilhadas para todas as bases de dados. Note: The location of the active 4D folder varies according to the operating system used. For more information, refer to the description of the Get 4D folder command in the 4D Language Reference manual.
  • Junto ao ficheiro de estrutura da base de dados. As macros só são carregadas para esta estrutura.
  • Para los componentes: en la carpeta Components de la base. As macros só são carregadas se o componente estiver instalado.

Estas três localizações podem ser utilizadas simultaneamente: é possível instalar uma pasta "Macros v2" em cada localização. The macros will be loaded in the following order: 4D folder, structure file, component 1... component X.

Macros predefinidas

4D oferece um conjunto de macros padrão contendo, por exemplo, palavras-chave de fluxo de controlo. Estas macros se incluyen en el archivo por defecto "Macros.xml", ubicado en la carpeta "Macros v2" que se crea en la carpeta 4D activa de la máquina durante el arranque inicial de 4D.

Pode modificar este ficheiro ou o conteúdo da pasta posteriormente, como desejar (ver o parágrafo seguinte). No caso de problemas com essa pasta, ela pode ser apagada e 4D a recriará na próxima inicialização.

Adicionar macros personalizadas

Pode adicionar macros personalizadas no ficheiro "Macros.xml" utilizando um editor de texto padrão ou através de programação. Também é possível adicionar ficheiros XML de macros personalizadas nesta pasta.

No modo local, o arquivo de macros pode ser aberto enquanto se usa 4D. A lista de macros disponíveis é atualizada em cada evento que ativa 4D. Por exemplo, é possível colocar o editor de texto em primeiro plano, modificar o ficheiro de macros e depois voltar ao método: a nova macro fica então disponível no editor de código.

As macros vazias ou incorretas não são mostradas.

Verificando a sintaxe das macros personalizadas

Os arquivos de macro-comandos de 4D devem estar em conformidade com o padrão XML. This means more particularly that XML declaration <?xml version="1.0" ...?> and document declaration <!DOCTYPE macros SYSTEM "http://www.4d.com/dtd/2007/macros.dtd"> statements are mandatory at the beginning of a macro file in order for it to be loaded. São suportados os diferentes tipos de codificação XML. No entanto, recomenda-se a utilização de uma codificação compatível com Mac/PC (UTF-8). 4D fornece uma DTD que pode ser usada para validar os ficheiros macro. Este ficheiro encontra-se na seguinte localização:

  • Windows: \Resources\DTD\macros.dtd
  • Mac OS: :Contents:Resources:DTD:macros.dtd

Se um ficheiro de macros não contiver os comandos de declaração ou não puder ser validado, não é carregado.

Sintaxe das macros 4D

As macros 4D são construídas usando etiquetas XML personalizadas chamadas "elementos".

Algunas etiquetas indican el inicio y el final de la definición (etiquetas dobles del tipo <tag> </tag>), otras se sustituyen por valores de contexto de inserción (<tag/>).

Em conformidade com as especificações XML, algumas etiquetas de elementos podem incluir atributos. Salvo indicação em contrário, estes atributos são facultativos sendo utilizado um valor por defeito quando são omissos. A sintaxe dos elementos com atributos é a seguinte:

  • Etiquetas dobles: <tag attribute="value"> </macro>
  • Etiquetas individuales: <tag attribute="value"/>

If the element accepts several attributes, you can group them in the same line of command, separated by a space: \<tag attribute1="value" attribute2="value" attribute3="value"... >

Eis a lista de etiquetas e o seu modo de utilização:

Etiquetas dos elementosDescription
<macros> </macros>Início e fim do ficheiro macro (etiqueta obrigatória).
<macro> </macro>Início e fim da definição de uma macro e dos seus atributos.
Atributos:
- name: Nome**da macro tal como aparece nos menus e nas listas do Editor de código (atributo obrigatório).
* type_ahead_text: Cadeia de caracteres** a introduzir para chamar a macro utilizando a função type-ahead (também conhecida como autocomplete)*.
- in_menu: Booleano que indica se a macro pode ser chamada utilizando o menu de contexto*. Valores = "true" (padrão) ou "false."
* type_ahead: Booleano que indica se a macro pode ser chamada utilizando a função type-ahead (também conhecida como autocomplete)*. Valores = "true" (padrão) ou "false."
- method_event: Utilizado para acionar a chamada automática da macro em função da fase de tratamento atual de cada método (criação, encerramento, etc.). Values = "on_load": The macro is triggered on the opening of each method, "on_save": The macro is triggered when each method is saved (closing of a modified method or saving using the File>Save command, "on_create": The macro is triggered when each method is created, "on_close": The macro is triggered when each method is closed.
"on_save" e "on_close" podem ser utilizados em conjunto --- por outras palavras, ambos os eventos são gerados quando um método modificado é fechado. Por outro lado, "on_create" e "on_load" nunca são gerados de forma consecutiva. Este atributo pode ser utilizado, por exemplo, para pré-formatar métodos quando estes são criados (comentários na área do cabeçalho) ou para registar informações como a data e a hora em que são encerrados.
* version: utilizada para activar el nuevo modo de soportar selecciones de texto para la macro (ver más adelante la sección "Acerca de la etiqueta <method>"). Para ativar este novo modo, passe o valor "2". Se omitir este atributo ou passar version="1", o modo anterior é mantido.
- in_toolbar: Booleano que indica se a macro deve estar presente no menu do botão Macro da barra de ferramentas. Valores= "true" (padrão) ou "false".
<selection/>Etiqueta substituída pelo texto selecionado quando a macro é inserida. A selecção pode estar vazia.
<text> </text>Início e fim do código que deve ser inserido no método. Um retorno de carro será adicionado antes e depois do código.
<method> </method>Início e fim do nome do método do projeto e do seu parâmetro (opcional). O método é executado quando a macro é chamada. Pode passar um parâmetro na forma ("param1;param2;..."). This parameter will be received in the method using the variables $1, $2, etc. This parameter will be received in the method using the variables $1, $2, etc. For additional information about this tag, refer to the "About the <method> Tag" section below. Para más información sobre esta etiqueta, consulte la sección "Acerca de la etiqueta <method>".
<caret/>Localização do ponto de inserção no código após a macro ter sido inserida.
<user_4D/>Etiqueta substituída pelo nome do usuário 4D atual.
<user_os/>Etiqueta substituída pelo nome do usuário do sistema atual.
<method_name/>Tag substituída pelo nome do método atual.
<method_path/>Tag replaced by path syntax (as returned by METHOD Get path of the current method.
<date/>Tag substituída pela data actual.
Attribute:
* format: Formato 4D utilizado para mostrar a data. Se nenhum formato for definido, será usado o formato padrão. Valores = número do formato 4D (0 a 8).
<time/>Tag substituída pela hora atual.
Attribute:
- format: Formato 4D utilizado para mostrar a hora. Se nenhum formato for definido, será usado o formato padrão. Valores = número do formato 4D (0 a 6).
<clipboard/>Etiqueta substituída pelo conteúdo da área de transferência.
Attribute:
* index: Área de transferência a ser colada. Valores = número da área de transferência (0 a 9).
  • As macros podem ser chamadas utilizando o menu de contexto do editor de código ou utilizando a função de antecipação de digitação (ver a seção seguinte).

  • Se quiser estar em conformidade com as especificações da linguagem XML, não deve utilizar caracteres alargados (caracteres acentuados, aspas, etc.).

Aqui está um exemplo de definição de macro:

Conteúdo da macroComments
<?xml version="1.0"...?>Declaração XML
<!DOCTYPE macros SYSTEM>Declaração do documento
<macros>Início do ficheiro XML das macros
<macro name="RecordLoop">Início da definição e nome da macro
<text>Início do código da macro
For($i;1;Records in selection(<Selection/>))La etiqueta <Selection/> será reemplazada por el código seleccionado en el método 4D al momento de la inserción de la macro (por ejemplo, un nombre de tabla)
SAVE RECORD(<Selection/>)
NEXT RECORD(<Selection/>)
End for
</text>Fim do código macro
</macro>Fim da definição de macro
</macros>Fim do ficheiro XML das macros

Sobre la etiqueta <method>

La etiqueta <method> permite generar y utilizar macrocomandos que ejecutan métodos proyecto 4D. Isto permite aos programadores criar funções sofisticadas que podem ser distribuídas através de macro-comandos associados a componentes. For example, the following macro will cause the MyMethod method to be executed with the name of the current method as parameter:

<method>MyMethod("<method_name/>")</method>

O código de um método chamado é executado num novo processo. Este processo é encerrado quando o método é executado.

O processo da estrutura permanece congelado até que a execução do método chamado seja concluída. Deve certificar-se de que a execução é rápida e que não há risco de bloquear a aplicação. If this occurs, use the Ctrl+F8 (Windows) or Command+F8 (Mac OS) command to "kill" the process.

Chamada de macros

Por predefinição, as macros podem ser chamadas utilizando o menu de contexto ou a barra de ferramentas do Editor de código, a função de preenchimento automático ou uma lista específica na parte inferior da janela do Editor de código.

Note-se que, para cada macro, é possível restringir a possibilidade de a chamar utilizando o menu de contexto e/ou a função de preenchimento automático.

By default, all macros can be called via the context menu of the Code Editor (using the Insert macro hierarchical command) or the Macros button of the toolbar.

The in_menu attribute of the <macro> tag is used to set whether or not the macro appears in this menu.

No menu de contexto, as macros são apresentadas pela ordem do ficheiro "Macros.xml" e de quaisquer ficheiros XML adicionais. Assim, é possível alterar a ordem modificando estes arquivos.

Autocompletar

By default, all macros are accessible using the autocomplete (aka type-ahead) function (see Writing a method). The type_ahead attribute of the <macro> tag can be used to exclude a macro from this type of operation.

Note: If the macro contains the <selection/> tag, it will not appear in the autocomplete pop-up window.

Lista do editor de código

You can display your macros in a list of the Code Editor (see Writing a method). Basta fazer duplo clique no nome de uma macro na lista para a chamar. Não é possível excluir uma macro específica desta lista.

Notas de compatibilidade

O suporte de macro pode mudar de uma versão de 4D para outra. Para manter as diferentes versões compatíveis enquanto mantém suas personalizações, 4D não remove nenhuma versão anterior. Se quiser utilizar as últimas funcionalidades disponíveis, tem de adaptar a sua versão em conformidade.

Variáveis de seleção de texto para métodos

It is recommended to manage text selections using the GET MACRO PARAMETERand SET MACRO PARAMETER  Estes comandos podem ser utilizados para ultrapassar o particionamento dos espaços de execução do projeto/componente anfitrião, permitindo assim a criação de componentes dedicados à gestão de macros. Para ativar este modo para uma macro, é necessário declarar o atributo Versão com o valor 2 no elemento Macro. In this case, 4D no longer manages the predefined variables _textSel,_textReplace, etc. and the GET MACRO PARAMETER and SET MACRO PARAMETER commands are used. Este atributo deve ser declarado da seguinte forma:

<macro name="MyMacro" version="2">
--- Text of the macro ---
</macro>

Se este atributo não for indicado, é mantido o modo anterior.

Incompatibilidades relacionadas com a norma XML

Devem ser observadas regras de sintaxe rigorosas para que os arquivos de macros respeitem a norma XML. Isto pode levar a incompatibilidades com o código das macros criadas com versões anteriores e impedir o carregamento de ficheiros XML. As principais causas de mau funcionamento são as seguintes

  • Los comentarios del tipo "// mi comentario", permitidos dentro de los elementos <macro> en versiones anteriores de 4D, no son compatibles con la sintaxis XML. Las líneas de comentarios deben respetar la forma estándar "<!-- mi comentario -->".
  • Los símbolos <> utilizados más particularmente para los nombres de objetos interprocesos deben codificarse. For example, the <>params variable must be written &lt;>params.
  • La etiqueta de declaración inicial <macros> podía omitirse en versiones anteriores de 4D. Agora é obrigatório; caso contrário, o ficheiro não será carregado.