Páginas filhas
  • _ADVPL_LOG_encodeUTF8

Versões comparadas

Chave

  • Esta linha foi adicionada.
  • Esta linha foi removida.
  • A formatação mudou.

...

Realizar a conversão do conteúdo de um texto para encode UTF-8.

Sintaxe

...

Bloco de código
_ADVPL_LOG_encodeUTF8( < cText >, [ < cCurrentEncode > ] )

...

Nome da variável 4GL do tipo ARRAY OF CHAR que irá receber a atribuição dos valores resultantes da divisão do conteúdo do parâmetro cText, respeitando a cadeia de caracteres indicada como delimitador.

(aviso) Este parâmetro deverá ser uma variável do tipo ARRAY simples, ou seja, na linguagem 4GL ela é definida como ARRAY OF CHAR. Assim sendo, não se deve utilizar aqui um parâmetro que seja, por exemplo, ARRAY OF RECORD.

(aviso) O array pode ou não ter uma quantidade de linhas na sua definição, no entanto a função sempre irá eliminar todas suas linhas e o retorno sempre será um ARRAY com a quantidade de linhas correspondente a quantidade de ocorrências encontradas, conforme o delimitador de valores informado.
Exemplo:
   DEFINE la_values ARRAY[] OF CHAR(300)

Nome

Tipo

Obrigatório?

Descrição

cText

CHAR

Sim

Texto de origem para ter seu conteúdo dividido em partes, de acordo com um delimitador.

a4GLReturnArray

ARRAY OF CHAR

Sim

nSize

CHAR

Sim

Tamanho máximo do bloco de texto que conterá cada linha do ARRAY.

nIgnoreBlankAtEnd

CHAR

Não

Indicador que permite ignorar a existência de espaços em branco no final do conteúdo de cada bloco, fazendo com que cada bloco obrigatoriamente seja finalizado por algum Character diferente de brancos. Neste caso os blocos ficam limitados ao tamanho máximo indicado, podendo conter um tamanho menor, caso a posição final do bloco contenha um espaço em branco.

Este indicador é utilizado para situações em que deseja utilizar o conteúdo destes blocos com seu conteúdo original sem agregar, nem perder qualquer posição, mesmo com posições que seja de espaços em branco. 

TRUE - Não permite que os blocos de textos identificados sejam finalizados com espaços em branco.

FALSE - Os blocos identificados de texto podem terminar com espaços em branco

Exemplo: Se este parâmetro for TRUE, para um texto de 250 posições, divididas em blocos de 50 caracteres, o texto final conterá os exatos 250 caracteres, caso opte em juntá-los um a um usando a instrução CLIPPED, pois cada bloco foi separado considerando que o último Character de cada bloco não fossem de espaços em branco. Neste caso os espaços em branco que poderiam existir no final dos blocos é automaticamente transferido para o bloco subsequente.

(informação) Quando este parâmetro não for informado, o VALOR PADRÃO será assumido como TRUE.

Retorno

(aviso) Apesar desta função não possui um retorno no formato padrão, o seu retorno é realizado por referência no parâmetro de entrada da função chamado a4GLReturnArray. Leia as informações deste parâmetro acima no tópico Parâmetros. (aviso) 

Exemplo

convertido para encode UTF-8

cCurrentEncode

CHAR

Não

Valor atual do encode do conteúdo cText. Caso não seja informado, será assumido como padrão o encode CP1252.

(informação) Para mais informações dos valores de ENCODE aceitos aqui acesse a documentação da função EncodeUTF8

Retorno

...

Tipo

Descrição

CHAR

Conteúdo do texto cText convertido para encode UTF-8.

Exemplo

...

Bloco de código
languageruby
themeConfluence
linenumberstrue
#---------------------------------------#
 FUNCTION strToDynArrayBySizeLOG_encodeUTF8_test()
#---------------------------------------#
  DEFINE l_text    CHAR(100)
  DEFINE la_values ARRAY[] OF VARCHAR(7)
  DEFINELET l_idxtext = "Texto com acentuação SMALLINT

para teste #Separarde osmudança valoresde encontrados num conteúdo texto, usando o delimitador como "|para UTF-8."
  LET l_text = "123456 8901234567 9012345678 0"
  CALL _ADVPL_LOG_strToDynArrayBySizeencodeUTF8(l_text,la_values,7)

  CALL conout("TOTALTEXTO DE BLOCOS ENCONTRADOS = "||arrayLength(la_values)||" LINHAS")

  FOR l_idx = 1 TO arrayLength(la_values)
      CALL conout("Valor "||LOG_alltrim(l_idx)||" = ["||la_values[l_idx]||"]")
  END FOR 
END FUNCTION

Veja após executar o exemplo do código acima, o resultado dos blocos de texto na variável LA_VALUES teve resultados distintos quando o último parâmetro (nIgnoreBlankAtEnd) foi informado de forma distinta:

Image Removed

Na primeira execução o valor da linha 2 ficou com um espaço em branco no início do conteúdo.

Já, na segunda execução, o valor desta mesma linha 2 ficou com espaço em branco no final da linha 1, pois o último parâmetro da função foi passado como FALSE, indicando que era permitido ter espaços em branco no final do conteúdo dos blocos capturados do texto.

Informações

em UTF-8: "||l_text CLIPPED)
END FUNCTION


Informações

...

Fontes: funcoes_genericasFontes: string.prw

Disponível a partir do pacote Logix 12.1.24032503.

Veja também

...

_ADVPL_LOG_strToDynArrayByTokendecodeUTF8