Pular para o conteúdo principal

Função INSTR do Oracle no Delphi

O Oracle possui uma função chamada INSTR(), ela procura por ocorrências de uma determinada palavra dentro de outra, começando de uma determinada posição, e retorna o índice quando encontrado.
Ex.:

SELECT INSTR('EDUARDO TEIXEIRA','ER', 1, 2) "Teste com INSTR"
FROM DUAL;

Teste com INSTR
----------
13

No exemplo acima a busca começa no primeiro caracter da frase 'EDUARDO TEIXEIRA' e procura pelo índice da segunda ocorrência da palavra 'ER', e o resultado foi a 13º posição.
Existe algo parecido no Delphi, é a função POEX, porém ela não trata ocorrências, trazendo sempre o índice da primeira encontrada, então ai vai uma função para o Delphi que faz o mesmo que o INSTR do Oracle:

function INSTR_Delphi(p_busca: string; p_buscado: string; p_inicio: integer; p_incidencia: integer): integer;
var
v_posi : integer; //guarda última posição encontrada
v_inc : integer;   //incidências já encontradas
v_i : integer;       //contador para loop

begin
//pego a primeira incidência do que é procurado
v_posi := PosEx(p_buscado, p_busca, p_inicio);
//
//se retornou alguma coisa continuo testando

if (v_posi 0) and (p_incidencia > 1) then 
begin
//ja pegou uma vez
v_inc := 1; 
//
//repito o teste até o final da palavra alvo
for v_i := v_posi to Length(p_busca) do
begin
//se eu encontrar agora partindo da posição encontrada anteriormente
//guardo a nova posição, se o limite de incidência não foi atingido

if (PosEx(p_buscado, p_busca, v_posi+1) 0) and (v_inc) then
begin
//guardo nova posição
v_posi := PosEx(p_buscado, p_busca, v_posi+1); 
//incremento incidência
v_inc := v_inc + 1;
end; //if (PosEx(p_buscado, p_busca, v_posi+1) 0) and (v_inc) then
end; //for v_i := v_posi to Length(p_busca) do 
end; //if (v_posi 0) and (p_incidencia > 1) then 
//
result := v_posi;
end;//function

Comentários

  1. ola amigo muito obrigado pelo link mais não achei em seu blogger o seu banner de lime-ke se vco fizer depois me avise que trocaremos de boa por enquanto vou apenas colocar seu link em meu blogger valeu abraços continue sempre assim força na luta por destino na blogosfera.

    ResponderExcluir
  2. Olá,

    Estou divulgando um evento de tecnologia que o yahoo tem promovido chamado open hack day.

    Os hacks são mashups, pequenas aplicacoes, que agrega/integra serviços, apis, códigos, de qualquer portal ou serviço da Internet.

    E agora vamos fazer o primeiro BR Open Hack Day em novembro 8 e 9, no campus da Universidade Senac aqui em São Paulo. Local com grande estrutura para grandes eventos.

    Estou escrevo então pra informar sobre esse evento, e pra pedir uma coisa:
    Divulgar no blog e nas faculdades de seu relacionamento (mandamos posters, os releases, e alguns exemplares dos materiais individuais).

    Peço então seu retorno, a respeito das questões acima.

    Obrigado,

    Abraço, Rodrigo.

    ResponderExcluir

Postar um comentário

Obrigado por Participar do programero, fique a vontade para agradecer, retificar, perguntar ou sugerir.

Mais visitadas

Aplicação Flask usando Nginx e Gunicorn

Aplicação Flask usando Nginx e Gunicorn Se você já desenvolveu uma aplicação Flask básica, sabe que o servidor de desenvolvimento embutido não é ideal para produção. Ele não é projetado para lidar com altos volumes de tráfego ou conexões simultâneas. Para tornar sua aplicação Flask mais robusta e pronta para produção, podemos usar o Gunicorn como servidor de aplicação e o Nginx como proxy reverso. Neste artigo, vamos adaptar o exemplo anterior ( Criando uma Aplicação CRUD com Flask, PostgreSQL e Docker ) para incluir o Nginx e o Gunicorn. O que são Nginx e Gunicorn? Gunicorn O Gunicorn (Green Unicorn) é um servidor de aplicação WSGI que roda aplicações Python como o Flask. Ele é eficiente e simples de configurar, lidando com múltiplas requisições ao mesmo tempo, algo que o servidor embutido do Flask não faz bem. Nginx O Nginx é um servidor web que atua como um proxy reverso. Ele recebe requisições HTTP e as encaminha ao Gunicorn. Além disso, o Nginx pode: Servir arquivos ...

Criando sua Primeira Aplicação Web com Python e Docker

  Criando sua Primeira Aplicação Web com Python e Docker Hoje vamos fazer algo prático: criar uma aplicação web simples em Python usando Flask e executá-la dentro de um contêiner Docker. Se você não sabe exatamente o que é Docker ou Flask, não se preocupe! Vou explicar tudo de forma simples para que você consiga acompanhar sem problemas. O que é Docker? Docker é uma ferramenta que permite empacotar aplicações e suas dependências em contêineres, garantindo que elas funcionem da mesma forma em qualquer ambiente. Em outras palavras, com o Docker, você cria um ambiente isolado e padronizado para rodar suas aplicações. Como instalar o Docker Acesse o site oficial do Docker . Baixe e instale a versão apropriada para o seu sistema operacional (Windows, macOS ou Linux). Após a instalação, verifique se está tudo funcionando abrindo um terminal e executando: docker --version Se o Docker estiver instalado corretamente, ele vai exibir a versão instalada. O que é Flask? Flask é um m...

Criando uma Aplicação CRUD com Flask, PostgreSQL e Docker

Criando uma Aplicação CRUD com Flask, PostgreSQL e Docker Neste guia, vamos criar uma aplicação básica que acessa um banco de dados PostgreSQL e realiza operações CRUD (Create, Read, Update, Delete). Vamos usar Flask e executar tudo com Docker. Sem estilos ou extras, apenas o essencial. Estrutura do Projeto crud-app/ |-- app/ | |-- app.py | |-- templates/ | | |-- index.html | | |-- edit.html |-- Dockerfile |-- requirements.txt |-- docker-compose.yml Passo 1: Dependências Crie um arquivo requirements.txt com as seguintes linhas: Flask==2.2.2 Flask-SQLAlchemy==3.0.2 psycopg2-binary==2.9.3 Werkzeug==2.2.2 Passo 2: Aplicação Flask Arquivo app/app.py : from flask import Flask, render_template, request, redirect, url_for from flask_sqlalchemy import SQLAlchemy app = Flask(__name__) # Configuração do banco de dados app.config['SQLALCHEMY_DATABASE_URI'] = 'postgresql://user:password@db:5432/crud_db' app.config['SQLALCHEMY_TRACK_MODIFICATIONS'] = False db...