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. 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. 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. | |||
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. Quando este parâmetro não for informado, o VALOR PADRÃO será assumido como TRUE. |
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 |
...
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
...
...