Tema: Uso de nil
Ver Mensaje Individual
  #5  
Antiguo 12-10-2005
Avatar de Lepe
[Lepe] Lepe is offline
Miembro Premium
 
Registrado: may 2003
Posts: 7.424
Reputación: 31
Lepe Va por buen camino
Cuidado con ese código, no es standard (lo digo por otro hilo que habla de stardares )

el TOracleDataset.Create está dentro del bloque try, esto quiere decir que si se produce una excepción al tiempo de crear ese objeto, irá al bloque except, e intentará liberar un objeto que aún no se ha creado. Además no se usa FreeAndNil en el except, así que de nada nos servirá Assigned.

Código propuesto:
Código Delphi [-]
 procedure TFrmInterfaz.PageControlChange(Sender: TObject);
 begin
   if PageControl.ActivePage <> TabSheet3 then
   begin
     if Assigned(InterfEntrada) then
        //como dice Lepe es lo mismo que if InterfEntrada <> nil
     begin
       DS.DataSet := nil;
       FreeAndNil(InterfEntrada);
     end;
   end
   else
// Si no es distinto, es que es igual, quitamos la pregunta
//     if PageControl.ActivePage = TabSheet3 then
   begin
       InterfEntrada :=  TOracleDataset.Create (nil);
       try
         InterfEntrada.Session := DMServidores.OSession;
       except
         freeandnil(InterfEntrada);
       end;
   end;
 end;
__________________
Si usted entendió mi comentario, contácteme y gustosamente,
se lo volveré a explicar hasta que no lo entienda, Gracias.
Responder Con Cita