PDA

Ver la Versión Completa : comparar numeros como string


nikotina
01-09-2008, 11:51:03
Hola a todos. Necesito saber la forma de poder comparar dos o mas numeros pero como tipo de datos string, ya que cuando son numeros enteros no hay problemas, lo lista de menor a mayor. Pero cuando los numeros son con decimales no los lista de menor a mayor. siempre hablando de numeros convertidos a strings.

muchas gracias

coso
01-09-2008, 12:11:54
hola, lo mejor seria que los volvieras a pasar de string a numero y hacer la comparación numerica

Besto
01-09-2008, 12:53:36
Lo único que puedes hacer es como dice coso, convertirlos a números y compararlos.

tcp_ip_es
01-09-2008, 15:17:10
y estas son las funciones para con decimales y enteros
strtofloat(String)
strtoint(String)

eduarcol
01-09-2008, 16:08:12
si lo quieres hacer desde el select puedes trabar con un cast(numero as string)

Rancy
16-09-2008, 09:13:45
Hola a todos :)

Mi problema es parecido al de nikotina, pero lo que quiero hacer es pasar un valor "Variant" a string, para poder escribirlo, o guardarlo sin mayores complicaciones.

Supongo que hay una funcion para esto, pero hasta ahora no he sido capaz de encontrarla, podriais ayudarme?

Muchas gracias, ;)

tcp_ip_es
16-09-2008, 09:22:17
con los variant el "cast" es automático no necesitas cambiar nada....e incluso puedes mostrar un variant en un showmessage...



procedure TForm1.Button1Click(Sender: TObject);
var s:string;
p:variant;
begin
p:=323;
s:=p;
showmessage(s);
showmessage(p)
end;

Rancy
16-09-2008, 09:41:40
Gracias Tony.
Ahora veo que tal vez el error vaya por otro lado, pero el programa sigue deteniéndose justo en el momento en que intento mostrar un variant.

Lo que hago es leer una celda de un documento de excel, hasta aquí ningún problema. Y el valor de esa celda de excel lo guardo en una variable variant.

Al intentar:

showmessage(MiVariableVariant);


Obtengo el siguiente error:
"Could not convert variant of type (Array Variant) into type (String)

Esque tal vez se supone que con "Array Variant" se está refiriendo a una tabla con varios posibles strings o valores? No estoy seguro, intentaré algo parecido a:


showmessage(MiVariableVariant[1]);


Y ahora te cuento :)

EDIT: No, no funciona. Ahora el error es: "Variant or safe array index out of bounds" (fuera de límites?) mmm ok, estoy leyendo de donde no debería, creo que debería declarar la variable de otro modo quizá.

tcp_ip_es
16-09-2008, 09:52:39
prueba con el 0.

showmessage(MiVariableVariant[0]);

Rancy
16-09-2008, 09:59:28
Tampoco funciona, quizá hoy no sea mi dia de suerte!

Seguiré buscando/probando, y si lo consigo postearé el cómo.

Hasta entonces, suerte! :)

Rancy
16-09-2008, 11:11:50
Ok, ya me di cuenta del fallo.

Corrijo la sentencia por:

showmessage(MiVariableVariant[x,y]);


Siendo "x" y "y" los números de las celdas del susodicho documento excel. Por ejemplo, [2,2] se refiere a la celda B2.

Y funciona. Así pues, la variable Variant es una tabla 2D donde hay la tabla entera de excel guardada? Me resulta un poco extraño, pero por lo menos he solucionado los problemas de código.