Club Delphi  
    FTP   CCD     Buscar   Trucos   Trabajo   Foros

Retroceder   Foros Club Delphi > Principal > OOP
Registrarse FAQ Miembros Calendario Guía de estilo Temas de Hoy

Grupo de Teaming del ClubDelphi

Respuesta
 
Herramientas Buscar en Tema Desplegado
  #1  
Antiguo 20-03-2008
Cheerpipe Cheerpipe is offline
Miembro
 
Registrado: oct 2006
Posts: 46
Poder: 0
Cheerpipe Va por buen camino
Como vaciar un variant?

Eso, como puedo tomar un variant y transformarlo en vacio??

PD: asignarle nil no funciona.
Responder Con Cita
  #2  
Antiguo 20-03-2008
keyboy keyboy is offline
Miembro
 
Registrado: oct 2004
Posts: 367
Poder: 20
keyboy Va por buen camino
Código Delphi [-]
V := Unassigned;

Bye
Responder Con Cita
  #3  
Antiguo 20-03-2008
Cheerpipe Cheerpipe is offline
Miembro
 
Registrado: oct 2006
Posts: 46
Poder: 0
Cheerpipe Va por buen camino
grcias por tu respuesta, pero no es exactamente lo que bsco.

Lo que es funcion hace es poner un valor nulo segun convencion y el tipo de variante

Si el variant es entero, le asignara 0, si es sring, '', si es objeto nil etc etc.

Lo que busco es algo radical y la verdad no muy correcto desde el punto de vista de la programacion. Lo que busco es transformar el variant en un tipo nulo o vacio, es decir, no cambiar su valor, si no cambiar el tipo de variatnte.

Bueno, la cosa es que al parecer delphi no hace eso pero las apis de windows si.

Dejo la funcion que me hice para tomar un variant de cualquier tipo y volvelrlo nulo.

Código Delphi [-]
function emptyVar: Variant;
  procedure _VarChangeType(var V: TVarData);
  begin
    VariantChangeType(V,V,0,varNull);
  end;
begin
  _VarChangeType(TVarData(Result))
end;

En mi caso lo use porque tengo algunos componentes ke tienen valores de tipo Variante, los cuales toman valores numericos, ransformando al variant en numero. En ciertos casos, necesito borrar estos valores, y a diferncia de un string en el ke puedo usar '' para borrar el contenido, si uso un 0 este sigue visualizandose en el componente, era por eso que yo necesitaba volvelo a un estado nulo (o sin forma).

La funcion funciona perfectamente. Tambien se puede usar para transformar un variant a otros tipos de datos.
Responder Con Cita
  #4  
Antiguo 21-03-2008
keyboy keyboy is offline
Miembro
 
Registrado: oct 2004
Posts: 367
Poder: 20
keyboy Va por buen camino
Todo esto que pones lo hace delphi perfectamente. Y no es lo mismo Null (lo que tú haces) a un variant vacío.

Esta es la función Null delphi:

Código Delphi [-]
function Null: Variant;
begin
  _VarNull(TVarData(Result));
end;

procedure _VarNull(var V: TVarData);
begin
  _VarClear(V);
  V.VType := varNull;
end;

que, como ves, cambia el tipo de variant.

Bye
Responder Con Cita
  #5  
Antiguo 25-03-2008
Cheerpipe Cheerpipe is offline
Miembro
 
Registrado: oct 2006
Posts: 46
Poder: 0
Cheerpipe Va por buen camino
Cita:
Empezado por keyboy Ver Mensaje
Todo esto que pones lo hace delphi perfectamente. Y no es lo mismo Null (lo que tú haces) a un variant vacío.

Esta es la función Null delphi:


Código Delphi [-]
function Null: Variant;
begin
_VarNull(TVarData(Result));
end;

procedure _VarNull(var V: TVarData);
begin
_VarClear(V);
V.VType := varNull;
end;





que, como ves, cambia el tipo de variant.

Bye

Lo primero que probe fue null, pero por algun motivo, el contenido del variant se transformaba a 0
Responder Con Cita
Respuesta



Normas de Publicación
no Puedes crear nuevos temas
no Puedes responder a temas
no Puedes adjuntar archivos
no Puedes editar tus mensajes

El código vB está habilitado
Las caritas están habilitado
Código [IMG] está habilitado
Código HTML está deshabilitado
Saltar a Foro

Temas Similares
Tema Autor Foro Respuestas Último mensaje
Como vaciar datos de forms Petolansa Varios 8 05-12-2007 20:11:59
Array Variant... Perio Varios 0 20-04-2006 15:57:54
¿Cómo vaciar los datos adjuntos del envio de un correo? D@byt Internet 1 01-12-2005 13:24:43
Variant, de que tipo? Barzaugc Varios 2 26-08-2005 21:14:30
Como asignar variant a un Tedit ¿? ayuda pofavó Slaughter Varios 9 12-02-2004 12:16:32


La franja horaria es GMT +2. Ahora son las 18:49:49.


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
Copyright 1996-2007 Club Delphi