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

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


Si quiero que se quede como tu dices atascado hasta que termine el Showmodal

Y tu dices que no lo creo?

No se crea cuando digo:
TForm2.Create(nil)

Si no se crea como es que se muestra?

De algo si tienes razón Ivan y es algo que no entiendo. Si alguien me lo pudiera explicar más. Ya que yo nunca he trabajado con delphi y soy bastante nuevo en Lazarus


De la siguiente forma no da error:

  Application.CreateForm(TForm2, Form2);
  with Form2 do
  try
    Showmodal;
  finally
   Free;
  end;

Y sin envargo de la siguiente forma si da error:

with TForm2.Create(nil) do
 try
    Showmodal;
  finally
   Free;
 end;

Saludos Reiterados
========
| 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 3:20 PM
  Subject: Re: [Lazarus-es] Error External SIGSEGV al asignar valor depropiedad


  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://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



    _______________________________________________
    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/ab4d51ea/attachment-0001.html>


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