Foros Club Delphi

Foros Club Delphi (https://www.clubdelphi.com/foros/index.php)
-   Varios (https://www.clubdelphi.com/foros/forumdisplay.php?f=11)
-   -   Comparar dos String (https://www.clubdelphi.com/foros/showthread.php?t=55375)

tonyskl 15-04-2008 14:25:55

Comparar dos String
 
Buenas,

tengo el siguiente problema...

estoy intentando comparar dos strings de la siguiente manera y no obtengo el resultado esperado:

...
s1 := 'ABE.P'
s2 := 'ABG'

CompareText(s1, s2)
...

En este caso en concreto me esta diciendo que s1 es mas grande que s2.

Pero yo quiero que me haga la comparacion alfabeticamente, es decir que me diga que s1 es mas pequeña que s2.

También lo he intentado directamente con:

...
s1 := 'ABE.P'
s2 := 'ABG'

s1 < s2
...

Muchas GRACIAS!!!

egostar 15-04-2008 15:56:58

Hola tonyskl

Creo que es un problema de concepto, esto no tiene que ver con una comparación literal de las cadenas, mas bien tiene que ver con la manera como los ordenas dentro de una lista, puedes hacer esto, a ver que te parece

Código Delphi [-]
procedure TForm1.Button1Click(Sender: TObject);
var
  Lista : TStringList;
begin
  Lista := TStringList.Create;
  Lista.Add('ABZ');
  Lista.Add('ABG');
  Lista.Add('ABH');
  Lista.Add('ABE.P');
  Lista.Add('ABJ');
  Lista.Sorted := True; //Esto ordena la lista en forma ascendente.
  ListBox1.Items.AddStrings(Lista);
  Lista.Free;
  ShowMessage(ListBox1.Items.Strings[ListBox1.Items.Count-1]);
end;

Salud OS

duilioisola 15-04-2008 16:00:08

A que te refieres con "alfabeticamente".
Teoricamente, s1 < s2 funciona correctamente.

Código Delphi [-]
s1 := 'ABE.P'
s2 := 'ABG'
if (s1 < s2) then
   showmessage ('S2 es más grande')
else
   showmessage ('S1 es más grande');

tonyskl 15-04-2008 16:04:03

Buenas egostar,

Gracias por tu respuesta.

Creo que la solución que das no me vale para mi caso particular.

Digamos que tengo exactamente lo mismo que tu, ¿ok? es decir una lista ordenada, y por otro lado tengo un string (que no quiero meter en esa lista) y quiero saber alfabeticamente en que posición iria...

¿Como lo podría hacer? ¿Lo puedo saber de una forma directa? ¿Tengo que hacerme una función y mirar caracter por caracter?

Gracias!

tonyskl 15-04-2008 16:13:33

Madre mia mi cabeza...

Tanto programar no es bueno.

Lo estaba haciendo bien pero me hice un lio...

GRACIAS!!! :rolleyes:

enecumene 15-04-2008 16:17:56

Cita:

Empezado por tonyskl (Mensaje 280178)
Madre mia mi cabeza...

Tanto programar no es bueno.

Lo estaba haciendo bien pero me hice un lio...

GRACIAS!!! :rolleyes:

Vamos Hombre, tómese un descanso y bébese una fría, cuando uno llega a ese punto debe hacerlo, te lo digo por experiencia, mucho código en la cabeza no es nada bueno, fíjese en lo que le paso a Delphius, ya no es Delphius, sino, Delphius y NewDelphius. :D:D

Saludos.

egostar 15-04-2008 16:18:18

Cita:

Empezado por tonyskl (Mensaje 280171)
Buenas egostar,

Gracias por tu respuesta.

Creo que la solución que das no me vale para mi caso particular.

Digamos que tengo exactamente lo mismo que tu, ¿ok? es decir una lista ordenada, y por otro lado tengo un string (que no quiero meter en esa lista) y quiero saber alfabeticamente en que posición iria...

¿Como lo podría hacer? ¿Lo puedo saber de una forma directa? ¿Tengo que hacerme una función y mirar caracter por caracter?

Gracias!

A que te refieres con la posición en la que iria.....:rolleyes::rolleyes::rolleyes:

Será que quieres hacer esto???

Código Delphi [-]
procedure TForm1.Button1Click(Sender: TObject);
var
  Lista : TStringList;
  Cadena: String;
begin
  Cadena := 'ABF';
  Lista := TStringList.Create;
  Lista.Add('ABG');
  Lista.Add('ABH');
  Lista.Add('ABE.P');
  Lista.Add('ABJ');
  Lista.Add(Cadena);
  Lista.Sorted := True; //Esto ordena la lista en forma ascendente.
  ShowMessage('La cadena : '+Cadena+' es la # '+inttostr(Lista.IndexOf(Cadena)+1)+
              ' de '+inttostr(Lista.Count)+' items!');
  Lista.Free;
end;

Salud OS


La franja horaria es GMT +2. Ahora son las 22:25:46.

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