Foros Club Delphi

Foros Club Delphi (https://www.clubdelphi.com/foros/index.php)
-   Varios (https://www.clubdelphi.com/foros/forumdisplay.php?f=11)
-   -   Inicialización de variables booleanas (https://www.clubdelphi.com/foros/showthread.php?t=62302)

noob 16-12-2008 03:40:40

Inicialización de variables booleanas
 
Hola a todos, en variables de tipo string y de tipo integer siempre las inicializo con los valores '' y a 0 respectivamente pero en cadenas booleanas no tengo costumbre, ¿es también necesario o siempre tienen el valor False por defecto?
Gracias.

Caro 16-12-2008 04:10:07

Cita:

Empezado por noob (Mensaje 331072)
Hola a todos, en variables de tipo string y de tipo integer siempre las inicializo con los valores '' y a 0 respectivamente pero en cadenas booleanas no tengo costumbre, ¿es también necesario o siempre tienen el valor False por defecto?
Gracias.

Hola noob, supongo que querías decir "variables" en vez de "cadenas". Si tu variable la defines como global, si se inicializa en False pero si es una variable local no se inicializa y toma el valor de True, ahí si es necesario inicializar si necesitas que este en False.

Saluditos

noob 16-12-2008 04:12:01

Sí, se me fue, quería decir variables booleanas :D
Gracias pues pensaba que siempre se inicializaba en False fuera variable global o no.
Salu2.

dec 16-12-2008 08:26:01

Hola,

Con mis diez pesetas de "informática" creo que es bien inicializar las variables, sean locales o globales, lo que no quiere decir que tenga que hacerse con valores constantes, sino que una variable puede inicializarse con el valor retornado por una función, etc. En todo caso, me ha sorprendido, porque, yo esperaba lo que noob, esto es, que las variables "booleanas" se inicializaran con un valor "Falso", y, efectivamente, parece que no es así. O sea, como bien ha dicho Caro:

Código Delphi [-]
var
  b: boolean;

procedure TForm1.Button1Click(Sender: TObject);
begin

  (* ... *)

  if b then
    ShowMessage('b = True')
  else
    ShowMessage('b = False');

  (* ... *)

end;

Lo anterior mostraría el mensaje "b = True", mientras que esto otro:

Código Delphi [-]
procedure TForm1.Button1Click(Sender: TObject);
var
  b: boolean;
begin

  (* ... *)

  if b then
    ShowMessage('b = True')
  else
    ShowMessage('b = False');


  (* ... *)

end;

Mostraría por el contrario el mensaje "b = False". Ahora bien, ¿por qué es esto así? ¿Alguien tiene alguna idea? ¿Quizá es un comportamiento que puede cambiarse mediante alguna directiva de compilación, si puede llamarse así? :rolleyes:

Lepe 16-12-2008 11:32:25

Cita:

Empezado por dec (Mensaje 331083)
O sea, como bien ha dicho Caro:

Pues después en la explicación lo dices al contrario que Caro, ¿en qué quedamos?

Creo que tu variable "global", es diferente a lo dicho por Caro, quizás ella se refiera a una variable global dentro de una clase... no sé no adivino aún los pensamientos de cada uno... aunque estoy en ello, estoy en ello ;)

Saludos

dec 16-12-2008 11:36:05

Hola,

Yo juraría que he dicho lo mismo que Caro, sólo que poniendo el código que lo ejemplifica. Resumiendo: las variables "booleanas" "globales" tienen un valor "verdadero" por defecto, sin inicializar por nuestra parte, mientras que las mismas variables, pero, "locales", se inicializan "solas" como "falsas".

No sé si ahora sí que la he terminado de liar. :D

Caro 16-12-2008 14:17:35

Cita:

Empezado por dec (Mensaje 331097)
Yo juraría que he dicho lo mismo que Caro, sólo que poniendo el código que lo ejemplifica. Resumiendo: las variables "booleanas" "globales" tienen un valor "verdadero" por defecto, sin inicializar por nuestra parte, mientras que las mismas variables, pero, "locales", se inicializan "solas" como "falsas".

Hola Dec, la verdad es que estas diciendo lo contrario, en las pruebas que hice la variable Boolean global, ya sea dentro de la clase (private o public) o definiendolo en Var se inicializa con False, que yo sepa las variables globales son inicializadas, por eso si te defines una variable Integer y ves su valor veras que es 0, pero si la defines como local veras que su valor es cualquier cosa (no se inicializa), por eso supongo, como el tipo Boolean solo toma dos valores y en la local no se inicializa, por eso tiene el valor de True.

Esta ha sido mi pruebita:

Código Delphi [-]
 private
    { Private declarations }
    //Estado : Boolean; //Definido aquí nos da False
  public
    { Public declarations }
  end;
var
  Form1: TForm1;
  //Estado : Boolean; //Definido aquí nos da también False
implementation
{$R *.dfm}
procedure TForm1.Button1Click(Sender: TObject);
var
 Estado : Boolean; //Definido aquí nos da True
begin
 if Estado then
  Showmessage('True')
 else
  Showmessage('False');
end;

Ahora nose porque a ti te sale al reves.

Saluditos

Al González 16-12-2008 14:34:30

¡Hola a todos!

Un gusto iniciar el día saludándolos.

Aquí explico algo sobre el tema que se trata: http://www.clubdelphi.com/foros/show...5&postcount=29

Espero sea de utilidad y sus comentarios en caso de generar más dudas.

Un abrazo variable.

Al González. :)


La franja horaria es GMT +2. Ahora son las 20:16:27.

Powered by vBulletin® Version 3.6.8
Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
Traducción al castellano por el equipo de moderadores del Club Delphi