Ver Mensaje Individual
  #4  
Antiguo 23-10-2014
Avatar de ecfisa
ecfisa ecfisa is offline
Moderador
 
Registrado: dic 2005
Ubicación: Tres Arroyos, Argentina
Posts: 10.508
Reputación: 36
ecfisa is a splendid one to beholdecfisa is a splendid one to beholdecfisa is a splendid one to beholdecfisa is a splendid one to beholdecfisa is a splendid one to beholdecfisa is a splendid one to beholdecfisa is a splendid one to behold
Hola Neru.
Cita:
Empezado por Neeruu Ver Mensaje
Probando un poco el tema de las múltiples instancias de una clase descubrí algo nuevo para mi y que no entiendo porque sucede, y lo detallo a continuación...

Abrir un proyecto nuevo, agregar 2 formularios al proyecto(Form1, Form2)

Al Form1 Agregar este codigo en el create (puede ser en el evento onclick de un buton)

Código Delphi [-]
var Formulario:TForm2;
begin
  if Not Assigned(Formulario) then //Tambien pueden reemplazarlo con If Formulario = Nil Then
    Formulario := TForm2.Create(Self);
  Formulario.Caption := 'Texto';
  Formulario.Show;
end;

Si ejecutan eso veran que el Formulario (TForm2) nunca se muestra....


Alguna idea de lo que sucede?
Si claro, estás declarando una variable local (Formulario) de tipo TForm2 y la evaluas sin haberla instanciado previamente:
Código Delphi [-]
var
  Formulario: TForm2;
begin
  // En este punto "Formulario" no es aún una instancia de la clase "TForm2" y su valor es indefinido
  if not Assigned(Formulario) then 
  ...

Guardando las distancias, sería similar a hacer esto:
Código Delphi [-]
var
  v: Integer;
begin
   // la variable "v" no ha sido inicializada y su valor es indeterminado
   if v > 1500 then // v = ????
     Caption := IntToStr(v);

También vale aclarar, que para justificar el uso de la función Assigned o la comparación con nil, en algún punto la variable evaluada debería ser capaz de obtener dicho valor.


Saludos
__________________
Daniel Didriksen

Guía de estilo - Uso de las etiquetas - La otra guía de estilo ....
Responder Con Cita