Hola marvajes,
Primero que nada en un bloque try-finally, el finally no es donde se captura el "error". El finally es un bloque que se ejecuta luego del try, sin importar si hubo una excepcion, un Break, un Exit, un Continue, etc.
Para catpturar errores, se usa el bloque try-except, asi:
Para mas info sobre excepciones se suele recomendar el libro "La Cara Oculta de Delphi", que esta en el FTP del club. Tambien hay mogollon de informacion en el foro e internet
Con respecto a tu problema, lo que te falto comentar es como esta definida tu tabla Archivo, no vaya a ser que tenga como limite justamente los 512kb