#command y #translate
#command <regra> => <resultado> · #translate <regra> => <resultado>Crea reglas de transformación sintáctica aplicadas por el preprocesador.
Descripción general
#command y #translate definen patrones de texto convertidos a sintaxis AdvPL. #command se dirige a comandos desde el inicio de la instrucción, mientras #translate permite sustituciones en otras posiciones. Son recursos avanzados habituales en archivos .ch y comandos de estilo xBase.
Sintaxis
#command <regra> => <resultado> · #translate <regra> => <resultado>Comando didáctico simple
#command MOSTRAR_ALERTA <cMensaje> => ;
MsgStop(<cMensaje>, "Aviso del sistema")
User Function ExCommand()
MOSTRAR_ALERTA "Saldo insuficiente"
ReturnLa instrucción se transforma en MsgStop() antes de compilar.
Traducción localizada
#translate VERDADEIRO => .T.
#translate FALSO => .F.
User Function ExTranslate()
Local lValido := VERDADEIRO
If lValido == VERDADEIRO
ConOut("Valor válido")
EndIf
ReturnLos identificadores se convierten en valores lógicos antes de la compilación; evalúa el costo de una sintaxis no convencional.
- Mantén las reglas compartidas en un .ch documentado.
- Evita nombres que choquen con comandos, funciones o definiciones existentes.
- AAdd() es una función de la biblioteca AdvPL; no se crea con #command.
- Una sintaxis particular dificulta búsquedas, depuración y mantenimiento.
- Una regla amplia de #translate puede modificar texto inesperado.
- Valida marcadores, opcionales, repeticiones y precedencia.
