Foros Club Delphi

Foros Club Delphi (https://www.clubdelphi.com/foros/index.php)
-   Varios (https://www.clubdelphi.com/foros/forumdisplay.php?f=11)
-   -   comparar numeros como string (https://www.clubdelphi.com/foros/showthread.php?t=59568)

nikotina 01-09-2008 11:51:03

comparar numeros como string
 
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...

Código Delphi [-]

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:
Código Delphi [-]
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:

Código Delphi [-]
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.

Código Delphi [-]
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:
Código Delphi [-]
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.


La franja horaria es GMT +2. Ahora son las 19:47:34.

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