Não entendi o motivo disso. Uma dica, dentro do registro t_func você pode criar um outro registro para o endereço. Outra dica, não é pra ler após cada opção, e sim uma única vez ao final, depois do "digite sua opção: " . Esse seu procedure também tá confuso. A busca é feita por uma comparação simples, vai varrendo o vetor fazendo if variaveldebusca = nomedofuncionario then writeln ('Funcionario achado: ', nomedofuncionario);