¿Qué tal que nos pones la definición correcta de la función? Porque esto
Código Delphi
[-]
function leer(Direccion,Var Dato:variant):Boolean;
ni siquiera compila. Por otra parte, qué son todos esos seleccionaElementoX? ¿Son variables o funciones? Trata reduciendo la función al mínimo (sin condicionales) para probar y tratar de aislar el problema.
// Saludos