Á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/6062824/tecnologia.css

Pagetitle
Encode64
Encode64

...

Pelo menos um dos dois primeiros parâmetros deve ser informado. Ao informar o segundo parâmetro, o primeiro será ignorado.

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

Ao especificar lZip com .T. o conteúdo do arquivo será compactado no formato zip e será adicionado um cabeçalho:
"#zip" - assinatura fixa (4 bytes)
tamanho Original - 4 bytes para tamanho original do buffer.
tamanho Compactado - 4 bytes para o tamanho do buffer compactado.

...

Exemplos

(Versão 13.1.3.x e 13.2.3.x)

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 cTextocEncode64 := ""
Local cDecode64 := ""
Local cEncode64cMensagem := ""
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")
Return

(Versão 17.1.1.x e 17.2.1.x)

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                               Local cMensagem |
//+----------------------------------------------------------------------------+
User Function Exemplo()
Local cTexto := ""
Local cEncode64 := ""
Local cLeitura1cDecode64 := ""
Local cMensagem := ""
Local cLeitura2cLeitura1 := ""
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

Abrangência

Microsiga Protheus 8.11 , Protheus 10 , TOTVS Application Server 10Application Server 13.1.3.x e 13.2.3.x

Veja também