[Lazarus-es] Error External SIGSEGV al asignar valor depropiedad

Maxi maximiliano.duarte en gmail.com
Mie Mayo 24 21:20:46 CEST 2017


Pero para poder llamar al form 2 debes crear primero, pero se quedaria
atascado haste que termine el showmodal.
Y al salir ya el objeto no existe. si quieres ese comportamiento deben
estar creados antes de intentar acceder a alguna propiedad.



El 24 de mayo de 2017, 15:51, Ismael L. Donis Garcia via Lazarus-es <
lazarus-es en lists.lazarus-ide.org> escribió:

> Si existe el problema ocurre cuando desde un formlario llamo a otro con
> Showmodal y ese otro llama a otro con Showmodal también
>
> Cuando desde el último llamado quiero coger un valor del anterior me da el
> error.
>
> Osea
>
>   Application.Initialize;
>   Application.CreateForm(TForm1, Form1);
>   Application.Run;
> Desde TForm1
>
> Form2.Showmodal;
>
> y desde Form2
>
> Form3.Showmodal;
>
> Ahora si en Form3 pregunto por ejemplo:
>
> if form2.edit1.text = 'xx' then // aqui suena el error
>
>
> Prueba creando un proyecto con 3 formularios:
> Pon en el primero:
> --------
> unit Unit1;
>
> {$mode objfpc}{$H+}
>
> interface
>
> uses
>   Classes, SysUtils, FileUtil, Forms, Controls, Graphics, Dialogs,
> StdCtrls;
>
> type
>
>   { TForm1 }
>
>   TForm1 = class(TForm)
>     Button1: TButton;
>     procedure Button1Click(Sender: TObject);
>   private
>     { private declarations }
>   public
>     { public declarations }
>   end;
>
> var
>   Form1: TForm1;
>
> implementation
> uses
>   Unit2;
>
> {$R *.lfm}
>
> { TForm1 }
>
> procedure TForm1.Button1Click(Sender: TObject);
> begin
>   with TForm2.Create(nil) do
>  try
>     Showmodal;
>   finally
>    Free;
>  end;
> end;
>
> end.
> --------
>
> Pon en el segundo:
> --------
> unit Unit2;
>
> {$mode objfpc}{$H+}
>
> interface
>
> uses
>   Classes, SysUtils, FileUtil, Forms, Controls, Graphics, Dialogs,
> StdCtrls;
>
> type
>
>   { TForm2 }
>
>   TForm2 = class(TForm)
>     Button1: TButton;
>     Edit1: TEdit;
>     procedure Button1Click(Sender: TObject);
>   private
>     { private declarations }
>   public
>     { public declarations }
>   end;
>
> var
>   Form2: TForm2;
>
> implementation
> uses
>   Unit3;
>
> {$R *.lfm}
>
> { TForm2 }
>
> procedure TForm2.Button1Click(Sender: TObject);
> begin
>   with TForm3.Create(nil) do
>  try
>     Showmodal;
>   finally
>    Free;
>  end;
> end;
>
> end.
> --------
>
> Pon en el tercero:
> --------
> unit Unit3;
>
> {$mode objfpc}{$H+}
>
> interface
>
> uses
>   Classes, SysUtils, FileUtil, Forms, Controls, Graphics, Dialogs,
> StdCtrls;
>
> type
>
>   { TForm3 }
>
>   TForm3 = class(TForm)
>     Button1: TButton;
>     procedure Button1Click(Sender: TObject);
>   private
>     { private declarations }
>     bvalida: boolean;
>   public
>     { public declarations }
>   end;
>
> var
>   Form3: TForm3;
>
> implementation
> uses
>   Unit2;
>
> {$R *.lfm}
>
> { TForm3 }
>
> procedure TForm3.Button1Click(Sender: TObject);
> begin
>   if Form2.Edit1.Text='xx' then
>     bvalida:=true;
>
> end;
>
> end.
> --------
>
> Saludos Cordiales
> ========
> | ISMAEL |
> ========
> Devuan User : http://distrowatch.com/table.php?distribution=devuan
> WebSite: <http://distrowatch.com/table.php?distribution=devuan>http://
> <http://sisconge.byethost15.com>sisconge.byethost15.com
>
> ----- Original Message -----
> *From:* Maxi via Lazarus-es <lazarus-es en lists.lazarus-ide.org>
> *To:* Spanish version of Lazarus List <lazarus-es en lists.lazarus-ide.org>
> *Cc:* Maxi <maximiliano.duarte en gmail.com>
> *Sent:* Wednesday, May 24, 2017 1:29 PM
> *Subject:* Re: [Lazarus-es] Error External SIGSEGV al asignar valor
> depropiedad
>
> El objeto ya no existe le hiciste free.
> Despues del showmodal
>
> El 23 de mayo de 2017, 13:23, Ismael L. Donis Garcia via Lazarus-es <
> lazarus-es en lists.lazarus-ide.org> escribió:
>
>> Tengo un formulario que tiene una propiedad pública:
>>
>> public
>>    { public declarations }
>>    property salvar: boolean write setsalvar;
>>
>> procedure Tfrecep.setsalvar(AValue: boolean);
>> begin
>>   bvalida:=AValue;
>> end;
>>
>> El cual llama otro formulario de la siguiente forma:
>>
>>      with Tfimprec.Create(nil) do
>>       try
>>         asignarnum:=strtoint(snorec);
>>         entidad:=sentidad;
>>         Showmodal;
>>       finally
>>         Free;
>>       end;
>> Cuando desde el formalario Tfimprec trato de asignarle un valor a la
>> propiedad salvar me da dicho error el cual no encuentro la posible causa.
>>
>> procedure Tfimprec.cmdcerrarClick(Sender: TObject);
>> begin
>>   frecep.salvar:=true;
>>   Self.Close;
>> end;
>>
>> Al alguien de ustedes le ha pasado esto? En caso afirmativo como lo han
>> solucionado?
>>
>>
>> Desde ya Gracias
>> <http://sisconge.byethost15.com>
>>
>> _______________________________________________
>> Lazarus-es mailing list
>> Lazarus-es en lists.lazarus-ide.org
>> http://lists.lazarus-ide.org/listinfo/lazarus-es
>>
>>
>
>
> --
> El que pregunta aprende, y el que contesta aprende a responder.
>
> No a la obsolecencia programada: http://www.rtve.es/noticias/
> 20110104/productos-consumo-duran-cada-vez-menos/392498.shtml
>
> Linux User #495070
> http://domonetic.com/blog
>
> ------------------------------
>
> _______________________________________________
> Lazarus-es mailing list
> Lazarus-es en lists.lazarus-ide.org
> http://lists.lazarus-ide.org/listinfo/lazarus-es
>
>
> _______________________________________________
> Lazarus-es mailing list
> Lazarus-es en lists.lazarus-ide.org
> http://lists.lazarus-ide.org/listinfo/lazarus-es
>
>


-- 
El que pregunta aprende, y el que contesta aprende a responder.

No a la obsolecencia programada:
http://www.rtve.es/noticias/20110104/productos-consumo-duran-cada-vez-menos/392498.shtml

Linux User #495070
http://domonetic.com/blog
------------ próxima parte ------------
Se ha borrado un adjunto en formato HTML...
URL: <http://lists.lazarus-ide.org/pipermail/lazarus-es/attachments/20170524/9f958834/attachment-0001.html>


Más información sobre la lista de distribución Lazarus-es