Olá,
Recentemente passei a utilizar com certa frequência a função 'posEx' então decidi fazer uma postagem sobre esta função que é muito útil.
a estrutura desta função é :
PosEx(const SubStr, S: string; Offset: Integer = 1): Integer;
exemplo:
var
nomeCompleto: string ;
nomeParte : string ;
begin
nomeCompleto := 'Ordem e progresso' ;
nomeParte := 'Ordem' ; //trim( edtVl2.Text ) ;
showmessage( nomeCompleto + #13 + nomeParte + #13 + intToStr( posEx( lowercase( nomeParte ), lowercase( nomeCompleto ), 0 ) ) ) ;
end ;
execução
Veja que esta função retorna a posição de onde o trecho da cadeia é similar à totalidade da cadeia, ou seja, visto que que em 'Ordem e progresso', 'Ordem' inicia a partir da primeira posição.
se alterarmos 'nomeParte' para 'Orden':
desta vez o valor retornado foi '0', pois o trecho de cadeia 'Orden' não existe na cadeia completa 'Ordem e progresso'.
Desta vez, vou referenciar nomeParte como 'progresso':
desta vez o valor retornado foi '9', pois o trecho de cadeia 'progresso' se encontra a partir da posição 9 da cadeia (completa) 'Ordem e progresso'.
se você já está a algum tempo no ramo da programação, é natural que você se pergunte "Por que você não usa a função 'pos'?", isso é natural, então eu te respondo:
diferente da função 'pos', na função 'posEx' eu consigo controlar a partir de onde a cadeia será analisada, por exemplo.
vamos manter os princípios do exemplo anterior, porém desta vez vou enviar mais um parâmetro para a função posEx:
em vez de enviar:
posEx( lowercase( nomeParte ), lowercase( nomeCompleto ), 0 )
ou
posEx( lowercase( nomeParte ), lowercase( nomeCompleto ) )
vou enviar
posEx( lowercase( nomeParte ), lowercase( nomeCompleto ), 10 )
desta forma, ao executar o programa e enviar para nomeParte como 'progresso', será apresentado:
perceba que o valor retornado desta vez foi '0', pois eu ordenei a função 'posEx' que realize a análise a partir da posição 10, ou seja, tudo antes desta posição será ignorado.
outro exemplo, vou enviar para nomeParte a cadeia 'rogresso':
ai está, o retorno foi 10, pois o trecho de cadeia 'rogresso' é iniciado na posição 10.
agradeço pela atenção, até a próxima.
quinta-feira, 23 de março de 2017
Função copy
Olá,
Nesta postagem trago uma função que uso muito no meu dia a dia, é a função 'copy'.
esta é a estrutura de declaração da função 'copy':
copy( s : ShortString; index, count : Integer ), sendo que é retornado um informação do tipo ShortString ;
exemplo de uso
var
nomeAntes: string ;
nomeDepois: string ;
begin
nomeAntes := 'Apenas um teste de funcionamento.' ;
showmessage( nomeAntes ) ;
nomeDepois := Copy( nomeAntes, 1, 9 ) ;
showmessage( nomeDepois ) ;
end;
execução
showmessage( nomeAntes ) ;
showmessage( nomeDepois ) ;
Nesta postagem trago uma função que uso muito no meu dia a dia, é a função 'copy'.
esta é a estrutura de declaração da função 'copy':
copy( s : ShortString; index, count : Integer ), sendo que é retornado um informação do tipo ShortString ;
exemplo de uso
var
nomeAntes: string ;
nomeDepois: string ;
begin
nomeAntes := 'Apenas um teste de funcionamento.' ;
showmessage( nomeAntes ) ;
nomeDepois := Copy( nomeAntes, 1, 9 ) ;
showmessage( nomeDepois ) ;
end;
execução
showmessage( nomeAntes ) ;
showmessage( nomeDepois ) ;
a função copy retorna o valor (cadeia) que estiver entre a posição index e o tamanho requisitado em count, ou seja, no nosso exemplo, temos a cadeia "Apenas um teste de funcionamento.", desta forma fica disposto assim:
'Apenas um teste de funcionamento.' = 33 char
copy( 'Apenas um teste de funcionamento.', 1, 9 )
1 = 'A'
9 = 'm'
retorno = ''Apenas um'
agradeço pela atenção, até a próxima.
Assinar:
Postagens (Atom)
-
Este framework de relatórios é muito bom, principalmente para quem usa ACBr. Vou mostrar como instalar o framework "Fortes report...
-
Em alguns casos durante a programação é comum surgir a necessidade de incrementar o valor de uma determinada variável. Nestas situações é...