Club Delphi  
    FTP   CCD     Buscar   Trucos   Trabajo   Foros

Retroceder   Foros Club Delphi > Principal > Varios
Registrarse FAQ Miembros Calendario Guía de estilo Temas de Hoy

Grupo de Teaming del ClubDelphi

Respuesta
 
Herramientas Buscar en Tema Desplegado
  #1  
Antiguo 07-11-2010
felixclase felixclase is offline
Registrado
NULL
 
Registrado: nov 2010
Posts: 2
Poder: 0
felixclase Va por buen camino
Unhappy Saber si una cadena termina con x frase

Bueno creo el titulo lo dice todo estuve googleando 1 hora y no encuentro la solucion. Encontre las funciones AnsiEndsStr y AnsiEndsText y ninguna la reconoce delphi. Mi delphi es el 7 segunda edicion si podrian ayudarme se los agradeceria...
Responder Con Cita
  #2  
Antiguo 07-11-2010
Avatar de ecfisa
ecfisa ecfisa is offline
Moderador
 
Registrado: dic 2005
Ubicación: Tres Arroyos, Argentina
Posts: 10.508
Poder: 36
ecfisa is a splendid one to beholdecfisa is a splendid one to beholdecfisa is a splendid one to beholdecfisa is a splendid one to beholdecfisa is a splendid one to beholdecfisa is a splendid one to beholdecfisa is a splendid one to behold
Hola felixclase, bienvenido al foro.

Al menos yo no conozco una función predefinida en Delphi que realize lo que buscas.
Pero usando algunas funciones básicas de Delphi se puede lograr:

Código Delphi [-]
function EstaAlFinal(Buscado, Texto: string): Boolean;
var
  i: Integer;
begin
  Result:= False;
  i:= Length(Buscado);
  while Texto[Length(Texto)-Length(Buscado)+i] = Buscado[i] do
    Dec(i);
  if i = 0 then
    Result:= True;
end;

Aunque la declaración de la función lo dice todo, siempre es mejor aclarar con un ejemplo como debe ser llamada:

Código Delphi [-]
procedure TForm1.Button1Click(Sender: TObject);
var
  s, t:string;
begin
  // Usando variables
  s:= 'Pedro y Juan están programando en casa';
  t:= 'programando en casa';
  if EstaAlFinal(t, s) then
    ShowMessage('Encontrada al final del texto') // muestra este mensaje
  else
    ShowMessage('No se encuentra al final del texto');
  // En forma directa
  if EstaAlFinal('programando en casa',
     'Pedro y Juan están programando en CASA') then
    ShowMessage('Encontrada al final del texto')
  else
    ShowMessage('No se encuentra al final del texto');// muestra este mensaje
end;

Saludos.
Responder Con Cita
  #3  
Antiguo 07-11-2010
[coso] coso is offline
Miembro Premium
 
Registrado: may 2008
Ubicación: Girona
Posts: 1.678
Poder: 0
coso Va por buen camino
Hola, no se si funcionara, pero puedes intentar buscar la cadena con el caracter #0 al final.

Código Delphi [-]

function Cadena_al_final(s,r : string): boolean;
begin
     result := Pos(s + #0,r) <> 0;
end;

saludos. A ver si funciona.
Responder Con Cita
  #4  
Antiguo 07-11-2010
rrf rrf is offline
Miembro
 
Registrado: ago 2003
Ubicación: S/C Tenerife, España
Posts: 454
Poder: 21
rrf Va por buen camino
Hola.

Coso, la solución que propones creo que no funciona (o, al menos, no me funcionó a mí).

La solución de Ecfisa funciona bien.

Aquí incluyo otra posible solución.

Se usa el texto de 2 Edit. Edit1 contiene la cadena en la que hay que buscar el texto que aparece en Edit2.

Está como una condición y no como función:

Código Delphi [-]
  if
    Copy ( Edit1.Text,
           length ( Edit1.Text ) -length ( Edit2.Text ) +1,
           length ( Edit2.Text ) )  = Edit2.Text
  then
    Label1.Caption := 'Si está contenido'
  else
    Label1.Caption := 'NO está contenido' ;

Saludos
Responder Con Cita
  #5  
Antiguo 08-11-2010
felixclase felixclase is offline
Registrado
NULL
 
Registrado: nov 2010
Posts: 2
Poder: 0
felixclase Va por buen camino
Smile

Cita:
Empezado por ecfisa Ver Mensaje
Hola felixclase, bienvenido al foro.

Al menos yo no conozco una función predefinida en Delphi que realize lo que buscas.
Pero usando algunas funciones básicas de Delphi se puede lograr:

Código Delphi [-]
function EstaAlFinal(Buscado, Texto: string): Boolean;
var
  i: Integer;
begin
  Result:= False;
  i:= Length(Buscado);
  while Texto[Length(Texto)-Length(Buscado)+i] = Buscado[i] do
    Dec(i);
  if i = 0 then
    Result:= True;
end;

Aunque la declaración de la función lo dice todo, siempre es mejor aclarar con un ejemplo como debe ser llamada:

Código Delphi [-]
procedure TForm1.Button1Click(Sender: TObject);
var
  s, t:string;
begin
  // Usando variables
  s:= 'Pedro y Juan están programando en casa';
  t:= 'programando en casa';
  if EstaAlFinal(t, s) then
    ShowMessage('Encontrada al final del texto') // muestra este mensaje
  else
    ShowMessage('No se encuentra al final del texto');
  // En forma directa
  if EstaAlFinal('programando en casa',
     'Pedro y Juan están programando en CASA') then
    ShowMessage('Encontrada al final del texto')
  else
    ShowMessage('No se encuentra al final del texto');// muestra este mensaje
end;

Saludos.
Hey gracias hermano me sirvio tu funcion..
Responder Con Cita
  #6  
Antiguo 08-11-2010
cloayza cloayza is offline
Miembro
 
Registrado: may 2003
Ubicación: San Pedro de la Paz, Chile
Posts: 921
Poder: 23
cloayza Tiene un aura espectacularcloayza Tiene un aura espectacular
Otra forma de hacerlo...

Código Delphi [-]
function EstaAlFinal(Buscado, Texto: string): Boolean;
begin
     //Debes incluir la unit StrUtils.pas.
     Result:= RightStr(Texto,Length(Buscando))=Buscando;
end;

procedure TForm1.Button1Click(Sender: TObject);
var
  s, t:string;
begin
      // Usando variables
      s:= 'Pedro y Juan están programando en casa';
      t:= 'programando en casa';
    
      if EstaAlFinal(t, s) then
         ShowMessage('Encontrada al final del texto') // muestra este mensaje
      else
         ShowMessage('No se encuentra al final del texto');
end;

Saludos
Responder Con Cita
Respuesta



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
¿Existe alguna función para saber si una cadena tiene un formato determinado? Kandorf OOP 4 16-08-2010 04:43:55
Saber si una cadena es un número válido rauros Varios 24 18-02-2008 21:45:17
Como saber si se entro una cadena determinada en un edit Tauro78 Varios 2 26-03-2007 11:18:03
Saber cuando termina una consulta zurech MySQL 2 16-09-2005 17:51:06
sentencia que no termina de ir ... chelejuan SQL 2 25-01-2005 19:50:44


La franja horaria es GMT +2. Ahora son las 13:20:59.


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