Ver Mensaje Individual
  #1  
Antiguo 23-11-2011
kdemia kdemia is offline
Miembro
 
Registrado: may 2010
Posts: 109
Reputación: 14
kdemia Va por buen camino
Question Problema con asignar valor nil a un puntero

Que tal comunidad, se me presento un problema a la hora de asignar y comparar un puntero con el valor nil.. me sale la excepcion "EAccessViolation" cuando se ejecutan las lineas en rojo, seguramente haya mas "EAccessViolation" pero si resuelvo esas dos resuelvo todos..

Codigo:

Código Delphi [-]
unit Cola;

interface

type


TDataCola = String;
PNodoCola = ^TNodoCola;
TNodoCola = record
  Data      : TDataCola;
  Siguiente : PNodoCola;
end;
TCola = class
  public
    procedure Create;
    procedure Free;
    procedure Push  ( Data : TDataCola );
    function  Pop   : TDataCola;
    function  Empty : Boolean;
  private
    Primero, Ultimo: PNodoCola;
end;

implementation

procedure TCola.Create;
begin
  Primero := Nil;
  Ultimo  := Nil;
end;

procedure TCola.Free;
var
  Aux : PNodoCola;
begin
  Ultimo := Nil;
  while not Empty do
  begin
    Aux     := Primero;
    Primero := Primero^.Siguiente;
    Dispose(Aux);
    Aux     := Nil;
  end;
end;

procedure TCola.Push(Data: TDataCola);
var
  Aux : PNodoCola;
begin
  New(Aux);
  Aux^.Data      := Data;
  Aux^.Siguiente := Nil;
  if Empty then
    Primero := Aux
  else
    Ultimo^.Siguiente := Aux;
  Ultimo := Aux;
end;

function  TCola.Pop;
var
  Aux : PNodoCola;
begin
  Result  := Primero^.Data;
  Aux     := Primero;
  Primero := Primero^.Siguiente;
  Dispose(Aux);
  Aux     := Nil;
end;

function  TCola.Empty;
begin
  Result := Primero = Nil;
end;

end.

Gracias y Saludos !
Responder Con Cita