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 16-06-2012
Avatar de Jere_84
Jere_84 Jere_84 is offline
Miembro
NULL
 
Registrado: sep 2011
Ubicación: Córdoba, Argentina
Posts: 214
Poder: 0
Jere_84 cantidad desconocida en este momento
Función para comprar dos strings

Hola Club!, hay alguna función de tipo Booleana que compare dos cadenas de texto? Estuve probando hay muchas pero pero no me convencen. Requiero comparar dos strings dentro de un ciclo, algo asi seria lo que necesito:

Código Delphi [-]
if Funcion(oClientDataSet.Fields.Fields[i].FieldName, vCamposClave)= False then
  begin
     //...
  end;

Slds.
Responder Con Cita
  #2  
Antiguo 16-06-2012
Avatar de mightydragonlor
[mightydragonlor] mightydragonlor is offline
Miembro Premium
 
Registrado: feb 2007
Ubicación: Medellín-Colombia
Posts: 587
Poder: 18
mightydragonlor Va por buen camino
Esta función te devuelve la cantidad de diferencias que encuentra entre las cadenas, aún así, no queda muy claro lo que necesitas.

Código Delphi [-]
function Diferencias(Str1, Str2: String): Integer;
var
  d : array of array of Integer;
  Len1, Len2 : Integer;
  i,j,cost:Integer;
begin
  Len1:=Length(Str1);
  Len2:=Length(Str2);
  SetLength(d,Len1+1);
  for i := Low(d) to High(d) do
    SetLength(d[i],Len2+1);
 
  for i := 0 to Len1 do
    d[i,0]:=i;
 
  for j := 0 to Len2 do
    d[0,j]:=j;
 
  for i:= 1 to Len1 do
    for j:= 1 to Len2 do
    begin
      if Str1[i]=Str2[j] then
        cost:=0
      else
        cost:=1;
      d[i,j]:= Min(d[i-1, j] + 1,
                   Min(d[i, j-1] + 1,
                       d[i-1, j-1] + cost)
                            );
    end;
  Result:=d[Len1,Len2];
end;
__________________
mas confundido que Garavito el día del Niño.
Responder Con Cita
  #3  
Antiguo 16-06-2012
Avatar de Jere_84
Jere_84 Jere_84 is offline
Miembro
NULL
 
Registrado: sep 2011
Ubicación: Córdoba, Argentina
Posts: 214
Poder: 0
Jere_84 cantidad desconocida en este momento
Cita:
Empezado por mightydragonlor Ver Mensaje
Esta función te devuelve la cantidad de diferencias que encuentra entre las cadenas, aún así, no queda muy claro lo que necesitas.

Código Delphi [-]
function Diferencias(Str1, Str2: String): Integer;
var
  d : array of array of Integer;
  Len1, Len2 : Integer;
  i,j,cost:Integer;
begin
  Len1:=Length(Str1);
  Len2:=Length(Str2);
  SetLength(d,Len1+1);
  for i := Low(d) to High(d) do
    SetLength(d[i],Len2+1);
 
  for i := 0 to Len1 do
    d[i,0]:=i;
 
  for j := 0 to Len2 do
    d[0,j]:=j;
 
  for i:= 1 to Len1 do
    for j:= 1 to Len2 do
    begin
      if Str1[i]=Str2[j] then
        cost:=0
      else
        cost:=1;
      d[i,j]:= Min(d[i-1, j] + 1,
                   Min(d[i, j-1] + 1,
                       d[i-1, j-1] + cost)
                            );
    end;
  Result:=d[Len1,Len2];
end;
Gracias mightydragonlor, pero lo único que necesito es que me digo si son o no iguales. Imagino que debe haber alguna que sea boolean.
Slds.
Responder Con Cita
  #4  
Antiguo 16-06-2012
Avatar de mightydragonlor
[mightydragonlor] mightydragonlor is offline
Miembro Premium
 
Registrado: feb 2007
Ubicación: Medellín-Colombia
Posts: 587
Poder: 18
mightydragonlor Va por buen camino
Cita:
Empezado por Jere_84 Ver Mensaje
Gracias mightydragonlor, pero lo único que necesito es que me digo si son o no iguales. Imagino que debe haber alguna que sea boolean.
Slds.
Prueba con esto.
Código Delphi [-]
procedure TForm1.Button1Click(Sender: TObject);
Var a,b: String;
  Function Igualdad(Str1, Str2: String): Boolean;
  Begin
    If Str1=Str2 Then Result:=True Else Result:=False;
  end;
begin
  a:= '123';
  b:= '123';
  If Igualdad(a,b) = True Then ShowMessage('Son iguales!') Else ShowMessage('Son diferentes!');
end;
__________________
mas confundido que Garavito el día del Niño.
Responder Con Cita
  #5  
Antiguo 16-06-2012
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
Cita:
lo único que necesito es que me digo si son o no iguales.
Hola Jere_84.

Entonces, otra posibilidad es utilizar cualquiera de las funciones StrCompare o AnsiStrCompare, estas devuelven un valor que según la propia ayuda de Delphi es:
Código:
Condition  Return Value
S1 > S2	   > 0
S1 < S2    < 0
S1 = S2	   = 0
Ahora podrías hacer:
Código Delphi [-]
 if Boolean(CompareStr('Hola', 'Hola')) then // True si son <>
    ShowMessage('Diferentes')
  else
    ShowMessage('Iguales');

Saludos.
__________________
Daniel Didriksen

Guía de estilo - Uso de las etiquetas - La otra guía de estilo ....

Última edición por ecfisa fecha: 16-06-2012 a las 20:47:17.
Responder Con Cita
  #6  
Antiguo 18-06-2012
Avatar de Delphius
[Delphius] Delphius is offline
Miembro Premium
 
Registrado: jul 2004
Ubicación: Salta, Argentina
Posts: 5.582
Poder: 25
Delphius Va camino a la fama
Pues... no conozco si existe una función para comprar strings. Es la primera vez que "escucho" que se tenga que pagar por usarlos

Ahora yendo a tu pregunta: Define para ti que dos strings sean iguales... porque a mi me huele a que te estás complicando al puro %$#&@. Define realmente que es "compararlos"
En principio para algo tan trivial y básico ¿Hace falta una función? ¿Que o quien te impide hacer algo como:

Código Delphi [-]
if String1 = String2
   then ShowMessage('Son Iguales macho. ¿Que no ves?')
   else ShowMessage('Pues resulta que somos distintos. Y no hizo falta de más para compararnos')
;

Digo... o es que yo me volví más tarado, que puede ser y no descarto , o es que tu esperas algo más de una "comparación". A ver si te explicas porque...

Saludos,
__________________
Delphius
[Guia de estilo][Buscar]
Responder Con Cita
  #7  
Antiguo 18-06-2012
cloayza cloayza is offline
Miembro
 
Registrado: may 2003
Ubicación: San Pedro de la Paz, Chile
Posts: 913
Poder: 23
cloayza Tiene un aura espectacularcloayza Tiene un aura espectacular
Bueno en delphi xe existen varias funciones para realizar lo que requieres...

Unit: SysUtils.Pas
  • SameStr
  • SameText
  • CompareStr
  • CompareText
  • AnsiCompareStr
  • AnsiCompareText
  • CompareMem

Cada una con sus características.

En la unit StrUtils.Pas, existen mas funciones la cosa sería buscar...

Saludos cordiales


Saludos
Responder Con Cita
  #8  
Antiguo 18-06-2012
Avatar de Jere_84
Jere_84 Jere_84 is offline
Miembro
NULL
 
Registrado: sep 2011
Ubicación: Córdoba, Argentina
Posts: 214
Poder: 0
Jere_84 cantidad desconocida en este momento
Cita:
Empezado por cloayza Ver Mensaje
Bueno en delphi xe existen varias funciones para realizar lo que requieres...

Unit: SysUtils.Pas
  • SameStr
  • SameText
  • CompareStr
  • CompareText
  • AnsiCompareStr
  • AnsiCompareText
  • CompareMem

Cada una con sus características.

En la unit StrUtils.Pas, existen mas funciones la cosa sería buscar...

Saludos cordiales


Saludos
Muchas Gracias, me quede con: SameText

Slds.
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
Documental: Comprar, tirar, comprar rretamar La Taberna 11 26-01-2011 18:06:40
Case para strings?? Milperrimo Varios 12 21-01-2009 22:19:28
¿Es buen momento para comprar Delphi? matabyte Debates 10 03-06-2008 12:40:05
¿Que portatil comprar para linux? Choll Linux 3 03-08-2007 13:49:51
Función para strings Jesús Pena Varios 4 26-04-2007 01:48:33


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


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