Bin2Var

Serializa qualquer variavel AdvPL em string binaria (Var2Bin) e desserializa de volta (Bin2Var). Util pra cache em campo memo, fila persistente, transporte.

Assinatura: Bin2Var(cBinario) -> xValor | Var2Bin(xValor) -> cBinario

Retorna: Any

Dupla Var2Bin/Bin2Var e o jeito tradicional de serializar variaveis em AdvPL. Funciona com qualquer tipo: array multidimensional, objeto, etc.

Sintaxe

cBin := Var2Bin(xValor)   // serializa
xVal := Bin2Var(cBin)     // desserializa

Exemplo

// Gravar array complexo em campo memo:
aLista := { {"A", 1, .T.}, {"B", 2, .F.} }
cSerial := Var2Bin(aLista)

RecLock("ZZZ", .F.)
ZZZ->ZZZ_DADOS := cSerial  // memo field
ZZZ->(MsUnlock())

// Reconstituir depois:
cSerial2 := ZZZ->ZZZ_DADOS
aListaRec := Bin2Var(cSerial2)
// aListaRec[1][1] == "A"

Caso de uso: cache de processamento pesado

// Em vez de recalcular sempre, salva em cache (tabela ZZ1):
If !CachedExists(cChave)
    aResult := CalcularPesado(...)
    GravaCache(cChave, Var2Bin(aResult))
Else
    aResult := Bin2Var(LeCache(cChave))
EndIf

Pegadinhas

Parâmetros

NomeTipoObrigatórioDescrição
cBinarioCharactersimString binaria serializada

Exemplos

Round-trip

cBin := Var2Bin(aDados)
aCopy := Bin2Var(cBin)

Veja também