Escriba una aplicación Delphi que no bloquee la asignación de recursos
La clave es garantizar que si se asignan recursos en el programa, incluso cuando ocurre una falla, el programa
El programa también debería poder liberar recursos ocupados.
Archivos, memoria, recursos y objetos de WINDOWS son algunos que se deben agregar de vez en cuando
Tenga cuidado para garantizar que se liberen los recursos. En el siguiente ejemplo de código de control de eventos
Primero se asigna la memoria y luego se produce un error que hace que ya no se ejecute.
Código de programa para liberar memoria:
PROCEDIMIENTOTForm1. Botón/Clic(Remitente:Objeto
);
var
Puntero1: Puntero;
Entero1,Número cero:Entero;
comenzar
Número cero: Κ0;
GetMem(Pointer1, 1024); {Asignar recursos de memoria de 1K}
Integer1: Κ5divNumzero; {Esta oración genera un error de división
error}
FreeMem (Pointer1, 1024); {Esta oración no se ejecutará aquí
Aceptar}fin;
Aunque la mayoría de los errores no son tan obvios, el ejemplo anterior contiene importantes
Un punto: cuando ocurre un error, la ejecución del programa salta del módulo y se liberan los recursos posteriores.
El código del programa ya no se ejecuta. Para garantizar que FreeMem en el ejemplo anterior pueda
Para liberar los recursos de memoria ocupados por GetMem, el código debe colocarse en un recurso
módulo de protección.
Este es el formato de un módulo curvo de protección de recursos:
{Asignación de recursos}
intentar
{Uso de recursos}
finalmente
{Liberación de recursos}
fin;
El intento anterior. . . El módulo finalmente permite que el programa siempre ejecute fi
Finalmente cualquier código de programa en la sección, incluso si hay un error en el módulo protegido.
producido en. Cuando un fragmento de código en la sección try provoca un error al ejecutarse, ejecute
La línea saltará directamente a la sección final si no se producen errores durante la ejecución;
Los programas se ejecutan en orden normal.
En el siguiente ejemplo de código de control de eventos, la memoria se asigna primero y luego
Se produjo un error, pero el código del programa que liberó la memoria aún se ejecutó:
ProcedimientoTForm1. Botón1Clic(Remitente:Objeto
);
var
Puntero1: Puntero;
Entero1,Número cero:Entero;
comenzar
Número cero: Κ0;
GetMem(Pointer1, 1024); {Asignar recursos de memoria de 1K}
intentar
Integer1: Κ5divNumzero; {Esta oración genera un error de división
error}
finalmente
FreeMem(Pointer1,1024);{Aquí esta oración aún se ejecutará
DE ACUERDO}
fin;
fin;
Cómo garantizar que el programa libere los recursos utilizados es una cuestión importante en la programación.
Este es un tema muy importante al que se debe practicar y prestar atención durante la programación.