Histórico da Página
...
Realizar a divisão de uma cadeia de texto em blocos de texto de um tamanho fixo e distribuindo o resultado dos valores dos blocos em linhas de uma lista (ARRAY) de tipo simples (ARRAY OF CHAR).
Sintaxe
...
| Bloco de código |
|---|
_ADVPL_strToDynArrayBySize( < cText >, < a4GLReturnArray >, < nSize >, [ < nIgnoreBlankAtEnd > ] ) |
Parâmetros
...
Nome | Tipo | Obrigatório? | Descrição |
|---|---|---|---|
cText |
| Sim | Texto de origem para ter seu conteúdo dividido em partes, de acordo com um delimitador. |
a4GLReturnArray |
| Sim | 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.
|
utilizar aqui um parâmetro que seja, por exemplo, ARRAY OF RECORD.
| |||
nSize |
| Sim | Tamanho máximo do bloco de texto que conterá cada linha do ARRAY. |
| nIgnoreBlankAtEnd |
| 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.
|
Retorno
...
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.
Exemplo
...
| Bloco de código | ||||||
|---|---|---|---|---|---|---|
| ||||||
#---------------------------------------#
FUNCTION strToDynArrayBySize_test()
#---------------------------------------#
DEFINE l_text CHAR(100)
DEFINE la_values ARRAY[] OF VARCHAR(7)
DEFINE l_idx SMALLINT
#Separar os valores encontrados num conteúdo texto, usando o delimitador como "|"
LET l_text = "123456 8901234567 9012345678 0"
CALL _ADVPL_strToDynArrayBySize(l_text,la_values,7)
CALL conout("TOTAL 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:
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
...
Fontes: string.prw
Disponível a partir do pacote Logix 12.1.2403.
Veja também
...
strToDynArrayBySize_ADVPL_strToDynArrayByToken
