Olá pessoal,
em meus sistemas guardo informações num campo com formato xml.
Assim, uso a contribuição da xhb para trabalhar com o mesmo.
Entretanto, de acordo com informações do forum, a contrib xhb do harbour não será continuada/ atualizada, podendo, no futuro, determinar incompatibilidade.
Assim, estou antecipando soluções para adequar o sistema e não utilizar as contribuições da xhb.
Nesse contexto, pensei em armazenar no lugar do xml um array.
Assim, deparei-me com as funções não documentadas ctoa() e atoc().
Ao que parece, elas resolvem meu problema, pois o texto a ser armazenado não terá tamanho superior a 64k.
Todavia, elas fazem menção às funções CHAR() e VALUE(), que não conheço, gerando um erro na compilação.
Talvez alguém possa me ajudar indicando as correspondentesdo harbour, se existentes.
Seguem abaixo o conteúdo das funções e link para localização:
FUNCTION AToC( aArray )
LOCAL i, nLen := Len( aArray )
LOCAL cType, cElement, cArray := ""
FOR i := 1 TO nLen
cElement := Char( aArray[ i ] )
IF ( cType := ValType( aArray[ i ] ) ) == "A"
cArray += cElement
ELSE
cArray += Left( cType, 1) + I2Bin( Len( cElement ) ) + cElement
ENDIF
ENDFOR
RETURN "A" + I2Bin( Len( cArray ) ) + cArray
FUNCTION CToA( cArray )
LOCAL cType, nLen, aArray := {}
cArray := SubStr( cArray, 4 ) // strip off array and length
WHILE Len( cArray ) > 0
nLen := Bin2I( SubStr( cArray, 2, 2 ) )
IF ( cType := Left( cArray, 1 ) ) == "A"
AAdd( aArray, CToA( SubStr( cArray, 1, nLen + 3 ) ) )
ELSE
AAdd( aArray, Value( SubStr( cArray, 4, nLen ), cType ) )
ENDIF
cArray := SubStr( cArray, 4 + nLen )
END
RETURN aArray
https://www.google.com.br/url?sa=t&rct= ... mghBtoIztC
Atenciosamente.
MarceloG