Sinceramente no lo sé. Pero en mi humilde opinión no es lógico que se cambie un valor al leerlo.
Código Delphi
[-]
if (EstadoReal<>eDesconocido) and (EstadoReal<>Result) then
¿por qué el estado no es el correcto ?
Creo que ese código debe ir en otro sitio, es decir, en el constructor, o bien en una propiedad del tipo Active := true / false o en un método llamado OpenTelephone
En el constructor pones Festado en eDesconocido
En el método OpenTelephone, modificas el estado (es lógico hacer esto aqui), incluso puede ser una función que devuelva TRUE / FALSE si todo ha ido bien.
en el GetEstado, solo devuelves el valor de FEstado, ya que:
- Si no se ha llamado a OpenTelephone devolverá eDesconocido
- Si se ha llamado al método, devolverá el valor detectado en ese método.
Ya veremos que opinan los demás
Un saludo