Escreva um aplicativo Delphi que não trave a alocação de recursos
A chave é garantir que, se recursos forem alocados no programa, mesmo quando ocorrer uma falha, o programa
O programa também deverá ser capaz de libertar recursos ocupados.
Arquivos, memória, recursos e objetos do WINDOWS são alguns que devem ser adicionados de tempos em tempos
Tome cuidado para garantir que os recursos sejam liberados. No exemplo de código de controle de evento a seguir
A memória é alocada primeiro e, em seguida, ocorre um erro, fazendo com que ela não seja mais executada.
Código do programa para liberar memória:
PROcedureTForm1. ButtonlClick(Remetente:Tobjeto
);
Var
Ponteiro1: Ponteiro;
Inteiro1,Númerozero:Inteiro;
começar
Numzero:Κ0;
GetMem(Pointer1, 1024); {Alocar 1K recursos de memória}
Integer1: Κ5divNumzero; {Esta frase gera um erro de divisão
erro}
FreeMem (Pointer1, 1024); {Esta frase não será executada aqui
OK}fim;
Embora a maioria dos erros não seja tão óbvia, o exemplo acima contém informações importantes
Um ponto: quando ocorre um erro, a execução do programa salta do módulo e os recursos subsequentes são liberados.
O código do programa não é mais executado. Para garantir que o FreeMem no exemplo acima possa
Para liberar os recursos de memória ocupados pelo GetMem, o código deve ser colocado em um recurso
módulo de proteção.
Aqui está o formato de um módulo curvo de proteção de recursos:
{Alocação de recursos}
tentar
{Uso de recursos}
finalmente
{Liberação de recursos}
fim;
A tentativa acima. . . O módulo finalmente permite que o programa sempre execute fi
??finalmente qualquer código de programa na seção, mesmo se houver um erro no módulo protegido
produzido em. Quando um trecho de código na seção try causar um erro ao ser executado, execute
A linha irá diretamente para a seção final se nenhum erro ocorrer durante a execução, então;
Os programas são executados na ordem normal.
No exemplo de código de controle de eventos a seguir, a memória é alocada primeiro e depois
Ocorreu um erro, mas o código do programa que liberou a memória ainda foi executado:
ProcedimentoTForm1. Button1Click(Remetente:Tobjeto
);
Var
Ponteiro1: Ponteiro;
Inteiro1,Númerozero:Inteiro;
começar
Numzero:Κ0;
GetMem(Pointer1, 1024); {Alocar 1K recursos de memória}
tentar
Integer1: Κ5divNumzero; {Esta frase gera um erro de divisão
erro}
finalmente
FreeMem(Pointer1,1024);{Aqui esta frase ainda será executada
OK}
fim;
fim;
Como garantir que o programa libere os recursos utilizados é uma questão importante na programação.
Esta é uma questão muito importante que deve ser praticada e prestada atenção durante a programação.