Usina BRGuía AdvPL
Ingresar
← Todos los temas
FUNDAMENTOPublicado

Tipos de variables AdvPL

Local <variável> := <valor> · ValType(<variável>)

Comprende cómo crear, nombrar, inicializar y asignar variables AdvPL y cómo su tipo sigue el valor almacenado.

VariablesTipos de datosAsignaciónNILValTypeFundamentos
01 · DESCRIPCIÓN GENERAL

Descripción general

Una variable es una referencia con nombre a un valor mantenido en memoria durante la ejecución. En AdvPL tradicional, su tipo es dinámico: lo determina el valor asignado y puede cambiar durante la vida de la variable. Esto es distinto del ámbito, que controla visibilidad y duración, y del tipado explícito As <tipo>, que documenta y restringe el contrato esperado.

02 · SINTAXIS

Sintaxis

Local <variável> := <valor> · ValType(<variável>)

Parámetros

Character
COpcional

Texto delimitado por comillas simples o dobles.

Numeric
NOpcional

Número entero o decimal almacenado en punto flotante.

Date
DOpcional

Fecha creada con Date(), CToD(), SToD() u otra función.

Logical
LOpcional

Verdadero (.T.) o falso (.F.).

Array
AOpcional

Colección indexada desde 1 que puede contener tipos diferentes.

CodeBlock
BOpcional

Conjunto de expresiones que puede ejecutarse posteriormente con Eval().

Object
OOpcional

Instancia de una clase.

NIL
UOpcional

Ausencia de valor; estado inicial habitual de una variable declarada sin inicializar.

03 · EJEMPLO PRÁCTICO

Declaración e inicialización

User Function ExVariables()
    Local cProducto   := "Teclado"
    Local nCantidad   := 2
    Local nPrecio     := 150.50
    Local lDisponible := .T.
    Local dRegistro   := Date()

    If lDisponible
        MsgInfo(cProducto + " - total: " + ;
            CValToChar(nCantidad * nPrecio))
    EndIf
Return
Resultado esperado

Cada variable recibe un valor inicial coherente con la intención indicada por el prefijo.

04 · EJEMPLO PRÁCTICO

NIL antes de la inicialización

User Function ExNil()
    Local nPorcentaje
    Local nResultado

    If ValType(nPorcentaje) == "U"
        nPorcentaje := 10
    EndIf

    nResultado := 250 * (1 + nPorcentaje / 100)
    MsgInfo("Resultado: " + CValToChar(nResultado))
Return
Resultado esperado

ValType() devuelve U mientras la variable no tiene valor; la inicialización evita usar NIL en el cálculo.

05 · EJEMPLO PRÁCTICO

Cambio dinámico de tipo

User Function ExTipoDinamico()
    Local xValor := "Pedido aberto"

    ConOut("Tipo atual: " + ValType(xValor)) // C
    xValor := 22
    ConOut("Tipo atual: " + ValType(xValor)) // N
    xValor := .T.
    ConOut("Tipo atual: " + ValType(xValor)) // L
    xValor := Date()
    ConOut("Tipo atual: " + ValType(xValor)) // D
Return
Resultado esperado

La misma variable almacena tipos diferentes. Esta flexibilidad debe ser intencional.

06 · EJEMPLO PRÁCTICO

Conversión antes de concatenar

User Function ExConversao()
    Local nQuantidade := 3
    Local dHoje       := Date()
    Local lAtivo      := .T.

    ConOut("Quantidade: " + CValToChar(nQuantidade))
    ConOut("Data: " + DToC(dHoje))
    ConOut("Ativo: " + IIf(lAtivo, "sim", "não"))
Return
Resultado esperado

Cada contenido se convierte a carácter antes de unirlo al texto.

07 · EJEMPLO PRÁCTICO

Asignación implícita que debe evitarse

User Function ExErroDigitacao()
    Local nQuantidade := 10

    nQuantidad := 20 // nome incorreto: pode criar uma Private

    MsgInfo("Quantidade: " + CValToChar(nQuantidade))
Return
Resultado esperado

Una letra ausente puede crear otro identificador en lugar de actualizar nCantidad.

BUENAS PRÁCTICAS
  • Declara e inicializa en la misma instrucción cuando exista un valor inicial claro.
  • Prefiere := para distinguir visualmente la asignación de las comparaciones = y ==.
  • ValType(xValor) devuelve una letra para el tipo actual y puede cambiar tras otra asignación.
  • Usa prefijos coherentes c, n, d, l, a, b, o y x para comunicar la intención.
  • La documentación consultada registra una regla histórica de diez caracteres para el identificador. Verifica el comportamiento en la versión de AppServer utilizada.
  • Separa los conceptos: tipo describe el valor; ámbito controla la visibilidad; duración indica cuánto existe la variable.
ERRORES COMUNES
  • Una declaración sin inicializar produce NIL y puede causar type mismatch en cálculos o concatenaciones.
  • Asignar a un nombre no declarado puede crear implícitamente una variable Private; un error de escritura puede cambiar la lógica silenciosamente.
  • Cambiar libremente el tipo reduce la previsibilidad. Hazlo solo intencionalmente y valida con ValType().
  • Convierte números, fechas, lógicos y NIL antes de concatenarlos con texto.
  • No uses palabras reservadas, espacios o caracteres especiales en identificadores.
  • Store se conserva por compatibilidad histórica; prefiere declaraciones explícitas y := en código nuevo.

Contenido relacionado

REFERENCIAS
  1. TOTVS. Creación y Asignación de Variables. TDN.
  2. TOTVS. Tipos de Datos. TDN.
  3. TOTVS. El Contexto de Variables dentro de un Programa. TDN.
  4. MASTERSIGA CONSULTORIA. Creación y Asignación de Variables. Actualizado el 18 mayo 2023.
  5. SILVA, Waterloo Ferreira da. La Biblia del AdvPL. 2004, pp. 22-24.
Estado
Publicado
Página creada el
Última revisión el
Idioma original
Portugués
Revisión
Usina.BR