Hola,
Problemente el problema está en la instrucción:
Código Delphi
[-]
Dato := obtenerdatos(Direccion);
Tendrías que mirar a ver. Una "violación de acceso" se origina, por ejemplo, cuando se trata de acceder a un objeto que ha sido previamente destruido, o que no llegó a crearse siquiera. Tendrás que depurar la aplicación. Sitúa un "punto de ruptura" en la instrucción que menciono a ver si puedes encontrar por dónde van los tiros.