Club Delphi  
    FTP   CCD     Buscar   Trucos   Trabajo   Foros

Retroceder   Foros Club Delphi > Principal > Varios
Registrarse FAQ Miembros Calendario Guía de estilo Buscar Temas de Hoy Marcar Foros Como Leídos

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: 29
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


Herramientas Buscar en Tema
Buscar en Tema:

Búsqueda Avanzada
Desplegado

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 08:58:44.


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