Yo siempre he usado:
Código Delphi
[-]
ExtractFilePath(Application.ExeName);
ya que lo que dice Al es muy cierto GetCurrentDir solo nos devuelve el directorio de trabajo actual y puede haber sido cambiado por la aplicación, la propiedad ExeName por otro lado, contiene todo el path completo del ejecutable se haya ejecutado de donde haya sido (inclusive una memoria USB).