Foros Club Delphi

Foros Club Delphi (https://www.clubdelphi.com/foros/index.php)
-   Varios (https://www.clubdelphi.com/foros/forumdisplay.php?f=11)
-   -   Saber si una cadena termina con x frase (https://www.clubdelphi.com/foros/showthread.php?t=70718)

felixclase 07-11-2010 04:31:49

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...

ecfisa 07-11-2010 09:48:20

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. :)

coso 07-11-2010 11:49:52

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.

rrf 07-11-2010 22:51:54

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

felixclase 08-11-2010 03:38:15

Cita:

Empezado por ecfisa (Mensaje 381590)
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..

cloayza 08-11-2010 14:51:50

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


La franja horaria es GMT +2. Ahora son las 05:17:40.

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