Club Delphi  
    FTP   CCD     Buscar   Trucos   Trabajo   Foros

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

Grupo de Teaming del ClubDelphi

Respuesta
 
Herramientas Buscar en Tema Desplegado
  #1  
Antiguo 04-08-2005
JavierO JavierO is offline
Miembro
 
Registrado: jul 2005
Ubicación: Pachuca, Hidalgo, México
Posts: 38
Poder: 0
JavierO Va por buen camino
Question Exite función para asignar otro valor si es null

Hola a todos:

quisiera saber si en Delphi existe alguna funcion en la cual determine si el valor de una variable o campo viene en null asigne otro valor por default como en SQL Server ISNULL(variable, 0) ó ISNULL(variable, 'X')

haber si algien me puede ayudar, muchas gracias
Responder Con Cita
  #2  
Antiguo 04-08-2005
Avatar de lucasarts_18
lucasarts_18 lucasarts_18 is offline
Miembro
 
Registrado: mar 2005
Ubicación: Villa Alemana,Chile
Posts: 1.087
Poder: 21
lucasarts_18 Va por buen camino
Hola:

La función assigned te servirá para tal próposito.

Saludos.
Responder Con Cita
  #3  
Antiguo 04-08-2005
Avatar de dec
dec dec is offline
Moderador
 
Registrado: dic 2004
Ubicación: Alcobendas, Madrid, España
Posts: 13.107
Poder: 34
dec Tiene un aura espectaculardec Tiene un aura espectacular
Hola,

A lo mejor habría que tener en cuenta cierta nota que aparece en la ayuda de Delphi para la función "Assigned":

Cita:
Empezado por Ayuda de Delphi
Assigned can't detect a dangling pointer--that is, one that isn't nil but no longer points to valid data. For example, in the code example for Assigned, Assigned won't detect the fact that P isn't valid.
Y este es el ejemplo a que se refiere:

Código Delphi [-]
var P: Pointer;
 
 begin
   P := nil;
   if Assigned (P) then Writeln ('You won''t see this');
   GetMem(P, 1024);    {P valid}
   FreeMem(P, 1024);    {P no longer valid and still not nil}
   if Assigned (P) then Writeln ('You''ll see this');
 end;
No sé. Me ha parecido conveniente comentarlo por lo que pudiera dar que pensar.
__________________
David Esperalta
www.decsoftutils.com
Responder Con Cita
  #4  
Antiguo 04-08-2005
Avatar de Lepe
[Lepe] Lepe is offline
Miembro Premium
 
Registrado: may 2003
Posts: 7.424
Poder: 28
Lepe Va por buen camino
Ya que se habla de Assigned, tambien es necesario hablar de FreeAndNil(p) de esta forma, primero se cambia el valor de p a nulo, y despues se libera la memoria de "p". Si se produjera una excepción al tiempo de liberar el objeto "p", la variable ya apunta a nulo, por tanto, se puede seguir usando sin problemas; aunque obviamente habría que estudiar por qué no se liberó correctamente y corregirlo.

En caso de usar Arrays, GetMem, etc, FreeAndNil no puede usarse, pero siempre está el recurso de hacer un dispose(p) y seguidamente la asignación p:= nil, para asegurarnos.

Un saludo
__________________
Si usted entendió mi comentario, contácteme y gustosamente,
se lo volveré a explicar hasta que no lo entienda, Gracias.
Responder Con Cita
  #5  
Antiguo 04-08-2005
Avatar de rastafarey
rastafarey rastafarey is offline
Miembro
 
Registrado: nov 2003
Posts: 927
Poder: 21
rastafarey Va por buen camino
Resp

Usar unasigned para asignar un nulo.
__________________
Todo se puede, que no exista la tecnología aun, es otra cosa.
Responder Con Cita
  #6  
Antiguo 04-08-2005
JavierO JavierO is offline
Miembro
 
Registrado: jul 2005
Ubicación: Pachuca, Hidalgo, México
Posts: 38
Poder: 0
JavierO Va por buen camino
lo que quiero hacer es lw_total := isnull(var1,0) - isnull(var2,0) - isnull(var3,0) - isnull(var3,0)

es decir que si no trae valor, ponga cero, para que pueda hacer la operación

para no estar haciendo varios if's
Responder Con Cita
  #7  
Antiguo 04-08-2005
Avatar de delphi.com.ar
delphi.com.ar delphi.com.ar is offline
Federico Firenze
 
Registrado: may 2003
Ubicación: Buenos Aires, Argentina *
Posts: 5.932
Poder: 27
delphi.com.ar Va por buen camino
Cuidado: ¡NULL y NIL no es lo mismo!


Assigned nos dice si un puntero apunta a 0, o sea es nil.
Null en Delphi indica que un Variant no tiene valor asignado. Podrías hacer:

Código Delphi [-]
function IsNull(Value as Variant; Default as Variant): Variant;
begin
  if VarIsNull(Value) then
    IsNull := Value
  else
    IsNull := Default;
end;
__________________
delphi.com.ar

Dedique el tiempo suficiente para formular su pregunta si pretende que alguien dedique su tiempo en contestarla.
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


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


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