Árvore de páginas

Versões comparadas

Chave

  • Esta linha foi adicionada.
  • Esta linha foi removida.
  • A formatação mudou.
Composition Setup
import.css=/download/attachments/3279126062824/newLayouttecnologia.css
Portuguese

Pagetitle
Decode64
Decode64

...

Função: Decode64

Converte uma string de 64 bytes para 32 (formato ASCII).

Decode64 ( < cToConvert> ) --> cRet

Converte uma string contendo um buffer codificado em BASE64 para o seu formato original

Sintaxe

Bloco de código
collapsefalse
Decode64( < cToConvert >, [ cFilePath* ], [ lChangeCase* ] )

Parâmetros

...

Nome

Tipo

Descrição

Obrigatório

Referência

cToConvert

...

caractere

Indica uma string codificada em BASE64 que será decodificada.

X

 

cFilePath*

caractere

Indica um arquivo para salvar o resultado da conversão

 

 

lChangeCase*

lógico

Se verdadeiro (.T.), nomes de arquivos e pastas serão convertidos para letras minúsculas; caso contrário, falso (.F.), não será feito nenhum ajuste no nome do arquivo informado. Valor padrão (.T.). Veja maiores informações em Observações.

 

 

Retorno

Nome

Tipo

Descrição

cRet

caractere

Retorna uma string convertida para o formato original

Observações

Os parâmetros marcados com (*) só estão disponíveis para versões superiores a 7.00.131227A (próximo label).

O parâmetro opcional lChangeCase foi introduzido pois em sistemas LINUX/UNIX, existe a diferenciação entre maiúsculo e minúsculo em nomes de arquivos ou pastas. Quando este parâmetro for informado, terá prioridade sobre comportamento de Case Sensitive definido pelas chaves de ini CASESENSITIVE ou SERVERTYPE. Porem, quando não especificado o parâmetro, o valor padrão (.T.) fica condicionado ao que está configurado nessas chaves.

Informações adicionais

Exemplos

    cRet(caracter)
  • Retorna uma string de 32 bytes.
cStr32 := Decode64( cStr64 ) // Converte uma string de 64 para 32 bytes
Bloco de código
languagecpp
themeEclipse
linenumberstrue
collapsefalse
#define CRLF Chr(13) + Chr(10)
#include "fileio.ch"
//+----------------------------------------------------------------------------+
//|Exemplo de uso da função Encode64 e Decode64                                |
//+----------------------------------------------------------------------------+
User Function Exemplo()
  Local cTexto := ""
  Local cEncode64 := ""
  Local cDecode64 := ""
  Local cMensagem := ""
  Local cLeitura1 := ""
  Local cLeitura2 := ""
  cTexto := "à noite, vovô kowalsky vê o ímã cair no pé do pingüim "
  cTexto += "queixoso e vovó põe açúcar no chá de tâmaras do jabuti feliz."
  cEncode64 := Encode64(cTexto)
  cDecode64 := Decode64(cEncode64)
  cMensagem := "Pangrama origem: [" + cTexto + "]"
  cMensagem += CRLF + "Texto -> Texto64: [" + cEncode64 + "]"
  cMensagem += CRLF + "Texto64 -> Texto: [" + cDecode64 + "]"
  MsgInfo(cMensagem, "Exemplo")
  
  // Leio o arquivo c:\temp\tst.jpg compactando e transformando em BASE64
  cEncode64 := Encode64(,"c:\\temp\\tst.jpg",.T.,.F.)
  
  // Faço o Decode do BASE64 direto para o arquivo tst_1.jpg (a descompactação já é tratada automaticamente)
  cDecode64 := Decode64(cEncode64,"c:\\temp\\tst_1.jpg",.F.)
  
  // Para testes/comparações. leio os dois arquivos
  fHdl := fOpen("c:\\temp\\tst.jpg",FO_READ,,.F.)
  if fHdl = -1
    conout("Erro ao abrir arquivo.")
    return
  endif
  nLen := fSeek(fHdl,0,FS_END)
  fSeek(fhdl, 0)
  fRead(fHdl, cLeitura1, nLen)
  fClose(fHdl)
  
  fHdl_1 := fOpen("c:\\temp\\tst_1.jpg",FO_READ,,.F.)
  if fHdl_1 = -1
    conout("Erro ao abrir arquivo.")
    return
  endif
  nLen := fSeek(fHdl_1,0,FS_END)
  fSeek(fhdl_1, 0)
  fRead(fHdl_1, cLeitura2, nLen)
  fClose(fHdl_1)
  
  // Como foi um Encode64 e Decode64 os arquivos precisar ser iguais!
  if (cLeitura1 == cLeitura2)
    conout("Encode64/Decode64 realizado com sucesso")
  endif

Return
de 64 bytes que será transformada para 32 bytes.
X

Abrangência

Advanced Protheus 6.09 , Advanced Protheus 7.10 , Microsiga Protheus 8.11 , Protheus 10, TOTVS Application Server 10

Veja

...

também