quinta-feira, 23 de março de 2017

Função posEx

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.

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 ) ;


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.


PHP para iniciantes - Vídeo #1