Funçao Excluir em uma Lista duplamente encadeada , ajuda plxx (PASCAL )

Bom dia !! e o seguinte estou tendo um problema , na procedure excluirFilme , queria uma ajuda para solucionar este problema …

vlwss aew

segue o codigo :

program trabalhoAv2;

uses crt;

type
    bloco = ^no;
    filme = record

        nomeDoFilme:String;
        genero:String;
        diretor:String;

    end;
    no = record
        info:filme;
        dir,esq:bloco;
    end;

var
    inicio,fim,aux:bloco;
    option: integer;
    nome,diretor,genero:string;
{ ====================== Criar ========================= }
procedure criar;
begin
    inicio := nil;
    fim := nil;
end;

{======================= Verificar ============================= }
function verificar : boolean;
begin
    verificar := ( inicio = nil );
end;

{ ======================== Pesquisar por nome ======================= }

function pesquisarPorNome(nome:string):filme;

var
   numero:integer;

begin
    aux := inicio;
    numero := 0;
    gotoxy(8,18);
    writeln;
    while ( aux <> nil ) do
    begin
        if ( aux^.info.nomeDoFilme = nome ) then
        begin
            writeln('       =====================================================');

            writeln('        NOME DO FILME : ' , aux^.info.nomeDoFilme);

            writeln('        GENERO : ', aux^.info.genero);

            writeln('        DIRETOR : ' , aux^.info.diretor);

            writeln('       =====================================================');
            numero := numero +1;
            pesquisarPorNome := aux^.info;
        end;

            aux := aux^.dir;
    end;
    if ( numero = 0 ) then
    begin
        writeln('       NENHUM FILME CADASTRADO COM ESTE NOME !');
    end;
end;

{ ======================== Pesquisar por genero ======================= }

procedure pesquisarPorGenero(genero:string);

var
    numero:integer;

begin
   aux := inicio;
   numero := 0;

   gotoxy(8,18);
   writeln;

   while ( aux <> nil ) do
   begin
        if ( aux^.info.genero = genero ) then
        begin
            writeln('      ======================================================');

            writeln('       NOME DO FILME : ' , aux^.info.nomeDoFilme);

            writeln('       GENERO : ', aux^.info.genero);

            writeln('       DIRETOR : ' , aux^.info.diretor);

            writeln('      ======================================================');
            numero := numero+1;
        end;

            aux := aux^.dir;
   end;
   if ( numero = 0 ) then
    begin
        writeln('       NENHUM FILME CADASTRADO COM ESTE GENERO ! ');
    end;
end;

{ ======================== Pesquisar por diretor ======================= }

procedure pesquisarPorDiretor(diretor:string);

var
    numero : integer;
begin
   aux := inicio;
   numero := 0;
   gotoxy(8,18);
   writeln;

   while ( aux <> nil ) do
   begin
        if ( aux^.info.diretor = diretor ) then
        begin
            writeln('       =====================================================');

            writeln('        NOME DO FILME : ' , aux^.info.nomeDoFilme);

            writeln('        GENERO : ', aux^.info.genero);

            writeln('        DIRETOR : ' , aux^.info.diretor);

            writeln('       =====================================================');
            numero := numero+1;
        end;

            aux := aux^.dir;
    end;
    if ( numero = 0 ) then
    begin
        writeln('       NENHUM FILME CADASTRADO COM ESTE DIRETOR ! ');
    end;
end;


{ ===================== CADASTRAR ================= }

procedure cadastrar;

var
    cad : filme;
    c:integer;
begin

    c := 0001;
    gotoxy(3,14);textcolor(red+blink);
    writeln('                     CADASTRAR                       ' );

    textcolor(7);
    textbackground(2);
    gotoxy(3,15);
    writeln(' ===================================================');

    gotoxy(3,16);
    writeln('| CODIGO : ',c,'                                        |');

    gotoxy(3,18);
    writeln('| NOME DO FILME :                                   |' );

    gotoxy(3,20);
    writeln('| GENERO :                                          |');


    gotoxy(3,22);
    writeln('| DIRETOR :                                         |');
    writeln;

    gotoxy(3,23);
    writeln(' ===================================================');

    gotoxy(21,18);readln(cad.nomeDoFilme);
    gotoxy(14,20);readln(cad.genero);
    gotoxy(15,22);readln(cad.diretor);

    new(aux);
    aux^.info := cad ;
    if ( verificar = true ) then
    begin
        aux^.dir := nil;
        aux^.esq := nil;
        inicio := aux;
        fim := aux;
    end
    else
    begin
        aux^.esq := nil;
        aux^.dir := inicio;
        inicio^.esq := aux;
        inicio := aux;
    end;
    gotoxy(3,24);writeln(' CADASTRO REALIZADO COM SUCESSO ! ');
    readkey;

end;
{ ====================== Remover um Filme ==========================}
procedure excluirFilme( nome : string );


begin
        aux^.info := pesquisarPorNome(nome);

        if ( aux = nil ) then
        begin
            gotoxy(3,20);textcolor(red);
            writeln('NAO EXISTE FILME CADASTRADO !!! ');
            textcolor(2);
        end
        else
        begin
            if (aux = inicio) then
            begin
                inicio := inicio^.dir;
                aux^.dir := nil;
                inicio^.esq := nil;
                dispose(aux);
            end
            else
            begin
                if ( aux = fim  ) then
                begin
                    fim := fim^.esq;
                    fim^.dir := nil;
                    aux^.esq := nil;
                    dispose(aux);
                end
                else
                begin
                    aux^.esq^.dir := aux^.dir ;
                    aux^.dir^.esq := aux^.esq ;
                    aux^.dir := nil;
                    aux^.esq := nil;
                    dispose(aux);
                end;
            end;
        end;
end;
{ ================ Listar todos os filmes ============= }

procedure listarFilmes;

begin
    clrscr;
    textcolor(7);
    gotoxy(10,1);
    writeln('##########################################');

    gotoxy(10,3);
    textcolor(red+blink);
    writeln('#      LISTA DE FILMES CADASTRADOS       #');

    textcolor(7);

    aux := inicio;
    gotoxy(4,5);
    writeln;
    if ( aux = nil ) then
        writeln('         NAO EXISTE NENHUM FILME CADASTRADO !!! ' );

    while aux <> nil do
    begin
        writeln('         ==========================================');

        writeln('         NOME DO FILME : ' , aux^.info.nomeDoFilme);

        writeln('         GENERO : ', aux^.info.genero);

        writeln('         DIRETOR : ' , aux^.info.diretor);

        writeln('         ==========================================');
        aux := aux^.dir;
    end;
    readkey;

end;



{ =============== PROGRAMA PRINCIPAL ==================== }
begin
    clrscr;
    textbackground(2);
    criar;

    while( option <> 6 ) do
    begin
    clrscr;
    textcolor(7);
        writeln('  =====================================================');
        gotoxy(3,2);textcolor(red+blink);
        writeln('+               LOCADORA INSERCTENTER               +');
        textcolor(7);
        writeln('  =====================================================');

        writeln;
        writeln;
        writeln('                  SELECIONE UMA OPCAO                  ');
        writeln('  [1] Cadastrar ' );
        writeln('  [2] Pesquisar filme ' );
        writeln('  [3] Alterar filme ' );
        writeln('  [4] Excluir filme ' );
        writeln('  [5] Listar filmes ' );
        writeln('  [6] Finalizar sistema ' );

        gotoxy (35,8);
        textcolor(red);
        textbackground(white);

        gotoxy (35,9);
        writeln('==============');

        gotoxy (35,10);
        writeln('| OPCAO =    |' );

        gotoxy (35,11);
        writeln('==============');

        gotoxy (45,10);
        readln(option);
        textcolor(7);
        textbackground(2);

        case (option) of
           1: begin
                cadastrar;
              end;
           2: begin
                textbackground(2);
                clrscr;
                textcolor(7);
                gotoxy(8,1);
                writeln('########################################################');

                gotoxy(8,3);
                textcolor(red+blink);
                writeln('#                   MENU DE PESQUISA                   #');

                textcolor(7);
                writeln;

                gotoxy(8,5);
                writeln('[1] PESQUISAR POR NOME ');

                gotoxy(8,6);
                writeln('[2] PESQUISAR POR GENERO');

                gotoxy(8,7);
                writeln('[3] PESQUISAR POR DIRETOR');

                gotoxy(8,8);
                writeln('[4] VOLTAR AO MENU PRINCIPAL');

                gotoxy(8,10);
                textcolor(red+blink);
                writeln(' SELECIONE O MODO DE PESQUISA :                         ' );
                gotoxy(40,10);readln(option);
                textcolor(7);

                case (option) of
                    1:  begin
                        gotoxy(8,13);writeln('=====================================================');
                        gotoxy(8,15);writeln('| DIGITE O NOME DO FILME :                          |');
                        gotoxy(8,17);writeln('=====================================================');
                        gotoxy(35,15);readln(nome);
                        pesquisarPorNome(nome);
                        end;

                    2:  begin
                        gotoxy(8,13);writeln('=====================================================');
                        gotoxy(8,15);writeln('| DIGITE O GENERO DO FILME :                        |');
                        gotoxy(8,17);writeln('=====================================================');
                        gotoxy(38,15);readln(genero);
                        pesquisarPorGenero(genero);
                        end;

                    3:  begin
                        gotoxy(8,13);writeln('=====================================================');
                        gotoxy(8,15);writeln('| DIGITE O NOME DO DIRETOR :                        |');
                        gotoxy(8,17);writeln('=====================================================');
                        gotoxy(37,15);readln(diretor);
                        pesquisarPorDiretor(diretor);
                        end;

                    4:  begin
                        textbackground(2);
                        clrscr;
                      end;
                else
                begin
                    textbackground(2);
                    textcolor(7);
                    gotoxy(8,13);writeln('=====================================');
                    gotoxy(8,14);writeln('| OPCAO INVALIDA , TENTE NOVAMENTE  |' );
                    gotoxy(8,15);writeln('=====================================');
                    readkey;
                end;
                end;
                 readkey;
           end;
        //   3: alterarFilme();
           4:   begin
                gotoxy(3,14);writeln('=====================================================');
                gotoxy(3,16);writeln('| DIGITE O NOME DO FILME :                          |');
                gotoxy(3,18);writeln('=====================================================');
                gotoxy(30,16);readln(nome);
                excluirFilme(nome);
                end;
           5: begin
                textbackground(2);
                listarFilmes;
              end;
           6: begin
                gotoxy(3,15);
                writeln('PRESSIONE QUALQUER TECLA PARA FINALIZAR...');
                option := 6;
              end
        else
             gotoxy(3,15);
             textcolor(7);
             textbackground(2);
             writeln('OPCAO INVALIDA , TENTE NOVAMENTE. ' );
             readkey;
        end;
    end;
        readkey;

end.