Club Delphi  
    Paypal   FTP   CCD     Buscar   Trucos   Trabajo   Foros

Retroceder   Foros Club Delphi > Principal > Varios
Registrarse FAQ Miembros Calendario Guía de estilo Buscar Temas de Hoy Marcar Foros Como Leídos

Coloboración Paypal con ClubDelphi

Respuesta
 
Herramientas Buscar en Tema Desplegado
  #1  
Antiguo 26-11-2008
Avatar de Sr.Scorpion
Sr.Scorpion Sr.Scorpion is offline
Miembro
 
Registrado: mar 2005
Posts: 92
Poder: 22
Sr.Scorpion Va por buen camino
Bueno aqui he hecho un procedimiento q se acerca bastante a lo q quiero, me imagino q se pueda simplificar y pulir un poco mas

Código Delphi [-]
function Buscar2(Cadena, formato: string): string;
var
I, J : Integer;
SubCad: string;
begin
J:=0;
for i:=1 to Length(cadena) do
begin
inc(J);
  if formato[j] = '#' then
   if cadena[i] in ['0'..'9'] then SubCad:= SubCad + cadena[i]
   else
    begin
     SubCad:='';
     J:=0;
    end;
  if formato[j] = '*' then
   if cadena[i] in ['A'..'Z'] then SubCad:= SubCad + cadena[i]
   else
    begin
     SubCad:='';
     J:=0;
    end;
  if (formato[j] <> '#') and (formato[j] <> '*') then
    if formato[j] = cadena [i] then SubCad:= SubCad + cadena[i]
    else
    begin
     SubCad:='';
     J:=0;
    end;
 if (j >= Length(formato)) and (cadena[i+1]=' ') Then break
end;
Result:=SubCad;
end;

procedure TForm1.Button1Click(Sender: TObject);
begin
showmessage(Buscar2(Edit1.Text, '##:##**'));
end;

La cadena seria:
11/17/08 09:45AM 126 01 2079775103 00:08'33 3040

Por lo q mostraria 09:45AM

Saludos
__________________
La paciencia es un árbol de raíz amarga pero de frutos muy dulces.

Sr.Scorpion
Responder Con Cita
  #2  
Antiguo 26-11-2008
[maeyanes] maeyanes is offline
Capo de los Capos
 
Registrado: may 2003
Ubicación: Campeche, México
Posts: 2.732
Poder: 26
maeyanes Va por buen camino
Hola...

Se me ocurre algo así (hecho de memoria y todavía no probado ):

Código Delphi [-]
function SearchFor(const Str, SearchFormat: string): string;
var
  I: Intetger;
  Temp: string;

begin
  for I := 0 to Length(Str) do
    if (Str[i] in ['0'..'9', 'A'..'Z'] then
      Temp := StringReplace(Str, Str[i], '#', [rfReplaceAll]);
  I := Pos(SearchFormat, Str);
  if I > 0 then
    Result := Copy(Str, I, Length(SearchFormat))
  else
    Result := ''
end;


Saludos...
Responder Con Cita
  #3  
Antiguo 28-11-2008
Avatar de Caro
*Caro* Caro is offline
Moderadora
 
Registrado: jul 2004
Ubicación: Cochabamba, Bolivia
Posts: 2.544
Poder: 24
Caro Va por buen camino
Cita:
Empezado por Sr.Scorpion Ver Mensaje
Bueno aqui he hecho un procedimiento q se acerca bastante a lo q quiero, me imagino q se pueda simplificar y pulir un poco mas


Código Delphi [-]
function Buscar2(Cadena, formato: string): string;
var
I, J : Integer;
SubCad: string;
begin
J:=0;
for i:=1 to Length(cadena) do
begin
inc(J);
if formato[j] = '#' then
if cadena[i] in ['0'..'9'] then SubCad:= SubCad + cadena[i]
else
begin
SubCad:='';
J:=0;
end;
if formato[j] = '*' then
if cadena[i] in ['A'..'Z'] then SubCad:= SubCad + cadena[i]
else
begin
SubCad:='';
J:=0;
end;
if (formato[j] <> '#') and (formato[j] <> '*') then
if formato[j] = cadena [i] then SubCad:= SubCad + cadena[i]
else
begin
SubCad:='';
J:=0;
end;
if (j >= Length(formato)) and (cadena[i+1]=' ') Then break
end;
Result:=SubCad;
end;

procedure TForm1.Button1Click(Sender: TObject);
begin
showmessage(Buscar2(Edit1.Text, '##:##**'));
end;


La cadena seria:
11/17/08 09:45AM 126 01 2079775103 00:08'33 3040

Por lo q mostraria 09:45AM

Saludos

Hola de nuevo, yo no lo haría así, funciona, pero talvez podría fallar en algunos casos, ademas si fuera así tendrías que aumentar mas y mas condiciones, en la función que te he mandado era solo aumentar dos lineas para cambiar las letras por el *, pero claro no funciona con subcadenas dentro cada palabra "##/##" y tu función tampoco funciona para ese caso.

Lo mejor es que uses el Pos para buscar subcadenas, como te ha indicado mayanes, corrigiendo algunos errores de su función y aumentando para que funcione con el *, quedaría así:

Código Delphi [-]
function SearchFor(const Str, SearchFormat: string): string;
var
  I: Integer;
  Temp: string;
begin
  Temp := Str;
  for I := 0 to Length(Temp) do
   begin
    if (Temp[i] in ['0'..'9']) then
      Temp := StringReplace(Temp, Temp[i], '#', [rfReplaceAll]);
    if (Temp[i] in ['A'..'Z']) then
      Temp := StringReplace(Temp, Temp[i], '*', [rfReplaceAll]);
   end;

  I := Pos(SearchFormat, Temp);
  if I > 0 then
    Result := Copy(Str, I, Length(SearchFormat))
  else
    Result := ''
end;
 
cadena := '11/12/08 09:45AM 126 01 2079775103 00:08''33 3040';
showmessage(SearchFor(cadena, '##:##**'));

Saluditos
__________________
Disfruten cada minuto de su vida a lado de sus seres queridos como si fuese el ultimo, uno nunca sabe lo que puede pasar.
Responder Con Cita
Respuesta


Herramientas Buscar en Tema
Buscar en Tema:

Búsqueda Avanzada
Desplegado

Normas de Publicación
no Puedes crear nuevos temas
no Puedes responder a temas
no Puedes adjuntar archivos
no Puedes editar tus mensajes

El código vB está habilitado
Las caritas están habilitado
Código [IMG] está habilitado
Código HTML está deshabilitado
Saltar a Foro

Temas Similares
Tema Autor Foro Respuestas Último mensaje
Buscar TAB en un string unreal4u Varios 4 13-07-2012 23:13:27
Buscar substring en string con IndexOf? Belaix Varios 3 12-11-2008 22:22:31
Buscar un string dentro de otro FunBit Varios 2 27-01-2006 14:45:16
Buscar String en AArchivo de texto!!! DB-ADO Varios 2 18-03-2005 16:02:32
Buscar palabra en una String diegofhernando Varios 10 23-05-2003 02:33:13


La franja horaria es GMT +2. Ahora son las 21:01:00.


Powered by vBulletin® Version 3.6.8
Copyright ©2000 - 2026, Jelsoft Enterprises Ltd.
Traducción al castellano por el equipo de moderadores del Club Delphi
Copyright 1996-2007 Club Delphi