Mas alla de que lo hayas solucionado, como consejo para el futuro, debes aprender a identificar y aislar los problemas. Osea en este caso, mas que un problema del portapapeles, lo que tenes delante es un problema de validacion de
strings. Simplemente debes validar que un string (no importa de donde venga, ingresado por el usuario, una respuesta de un webservice, un campo de una base de datos, el contenido de portapapeles) contenga solo numeros
Y otra cosa es que debes tener cuidado con el tratamiento de
numeros de punto flotante, sobre todo para las comparaciones. Esta es la
explicacion universal, mientras que
este link es mas "Delphi especifico", y
esta es la documentacion oficial
En pocas palabras, los numeros de punto flotante no se pueden representar con exactitud. Pueden ocurrir absurdos matematicos como 2.0 = 2.0 --> Evaluando a
False
Obviamente hay soluciones al problema, para comparar numeros de coma flotante podes usar las funciones definidas en la unidad
System.Math. En particular para saber si un flotante es cero deberias utilizar la funcion
System.Math.IsZero. Otros metodos para comparar incluyen
System.Math.SameValue y
System.Math.CompareValue
Y por ultimo, la solucion mas adecuada a tu problema (
es este string un numero de punto flotante?) sea utilizar la funcion
System.SysUtils.TryStrToFloat
Esta funcion devuelve un Boolean indicando si el string es un numero de punto flotante, y tambien tiene un parametro de salida con la conversion ya realizada:
Código Delphi
[-]
var
s: string;
Value: Double;
begin
s := if TryStrToFloat(s, Value) then
begin
end
else
end;