Foros Club Delphi

Foros Club Delphi (https://www.clubdelphi.com/foros/index.php)
-   Varios (https://www.clubdelphi.com/foros/forumdisplay.php?f=11)
-   -   Exite función para asignar otro valor si es null (https://www.clubdelphi.com/foros/showthread.php?t=23976)

JavierO 04-08-2005 02:08:25

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

lucasarts_18 04-08-2005 02:15:06

Hola:

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

Saludos.

dec 04-08-2005 03:51:09

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.

Lepe 04-08-2005 10:39:20

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

rastafarey 04-08-2005 17:29:40

Resp
 
Usar unasigned para asignar un nulo.

JavierO 04-08-2005 18:13:13

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

delphi.com.ar 04-08-2005 18:22:56

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;


La franja horaria es GMT +2. Ahora son las 20:01:23.

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