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

Ismael L. Donis Garcia slibre en natio.co.cu
Mie Mayo 24 20:51:28 CEST 2017


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://sisconge.byethost15.com
  ----- Original Message ----- 
  From: Maxi via Lazarus-es 
  To: Spanish version of Lazarus List 
  Cc: Maxi 
  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

    _______________________________________________
    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
------------ próxima parte ------------
Se ha borrado un adjunto en formato HTML...
URL: <http://lists.lazarus-ide.org/pipermail/lazarus-es/attachments/20170524/3981d5ae/attachment-0001.html>


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