Cita:
Empezado por juniorSoft
Trate de Utilizar
Código Delphi [-]
if value.IsType<.Double> then
pero no funciono
|
El registro
System.Rtti.TValue es un tanto especial, ya que es un "contenedor" de cualquier tipo de datos. Desde objetos, a interfaces, metaclases, punteros, primitivos, otros registros, metodos anonimos..
Ahora bien, dicho "valor" se escribe con un dato de entrada de "cierto tipo", y el metodo
IsType<T> lo que hace es comparar el
TypeInfo entre lo que le envias como generico y el del valor almacenado.
Un ejemplo practico:
Código PHP:
var
v: TValue;
begin
// inicializamos un TValue con un string
v := TValue.From<string>('1234');
// la sobrecarga del operador implicito hace posible esta sintaxis tambien
v := '1234';
Writeln(v.IsType<string>); // --> True
Writeln(v.IsType<Integer>); // -- False
end;
Lo que te quiero decir es que IsType<T> va a comparar por el valor "raw" internamente almacenado. No realiza ninguna conversion ni ninguna validacion, estas comparando el tipo de datos; y tiene logica puesto que un
string no es un
Integer, por mucho mas que la conversion en este caso fuera posible