Forum > Spanish

Excepción de la clase 'External: SIGSEGV' al intentar listar reporte

(1/3) > >>

esdonis:
Cuando intento listar un reporte en LazReport después de haber cerrado todos los formularios abiertos me da la siguiente excepción:

Excepción de la clase 'External: SIGSEGV'
En archivo lr_progr.pas en linea 76:
Timer1.Enabled:=true;

Edson:
No conozco mucho de LazReport, pero lo primero que yo haría es ver si los objetos referenciados son correctos. En tu caso vería si Timer1 todavía existe cuando intentas acceder a él con: Timer1.Enabled:=true;

BlueIcaro:
¿Podrías mostrar el código dónde falla?.
Indicar que versión de lazarus usas y que sistema operativo también puede ser de ayuda.
Saludos
/BlueIcaro

esdonis:
Uso Lazarus 1.6.2 sobre windows
El procedimiento es bien largo pero voy a poner lo que creo esencial

//El error ocure si mando a ejecutar este procedimiento del modulo

procedure Tdm.IniSis();
var
   f: Tforigen;
  i: integer;
begin
  DecimalSeparator:='.';
  ThousandSeparator:=',';
  ShortDateFormat := 'dd/mm/yyyy';
  blnend := false;
  intciclo := 0;
  intfilas := 0;
  intnivel := 0;
  lngentidad := 0;
  struser := '';
  strerror := '';
  for i := Screen.FormCount - 1 downto 0 do begin
    if Screen.Forms.Name <> Self.Name then begin
      if Screen.Forms.Name <> 'fconta' then Screen.Forms.Free;
    end;
  end;
  for i := Screen.FormCount - 1 downto 0 do begin
    if Screen.Forms.Name <> Self.Name then Screen.Forms.Free;
  end;

  Application.CreateForm(Tfconta, fconta);
  Application.CreateForm(Tfsplash, fsplash);
  fsplash.Show;

  Application.ProcessMessages;
  if datos() then
    entrar()
  else
    begin
      f:=Tforigen.Create(Self);
      f.IniSystem:=true;
       f.ShowModal;
       f.Free;
      if blnend then
        cerrarme()
      else if datos() then
        begin
          intciclo := intciclo + 1;
           entrar()
        end
      else
        cerrarme();
    end;
end;

//Este procedimiento tambien esta en el modulo
procedure Tdm.entrar();
var
   f: Tflogin;
begin
  if length(struser) = 0 then struser := 'administrador';
  if (cnsc.Connected or cnsch.Connected or cnos.Connected) then FinConexServer();
  IniConexServer;
  f:=Tflogin.Create(Self);
  f.ShowModal;
   f.Free;
  if blnend then
    cerrarme()
  else
    begin
      fconta.lblestado.Caption := 'Listo';
      fconta.Show;
      fsplash.Free;
    end;
end;

//Para mostrar el reporte esto esta en un formulario

if ((cbomes.ItemIndex <> 0) and ((cboent.ItemIndex <> 0) or (dm.Entidad = 0))) then
   rpt.LoadFromFile(ExtractFilePath(Application.Exename) + 'balmes.lrf')
else
    rpt.LoadFromFile(ExtractFilePath(Application.Exename) + 'balance.lrf');
fconta.prbestado.Position:=98;
rpt.ShowReport;

esdonis:
Se mo olvido comentar que el procedimiento Tdm.IniSis siempre se ejecuta al inicial el sistema y los reportes se muestran bien.

Pero si quiero cerrar la sección del usuario para iniciar otra sección mando a ejecutar de nuevo el procedimiento Tdm.IniSis que esta en el datamodule y es cuando me da error los reportes al tratar de visualizarlos.

El timer que me da error esta en un formulario de Lazarus, también algunas veces me da otro error diferente.

Navigation

[0] Message Index

[#] Next page

Go to full version