Forum > Spanish

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

<< < (2/3) > >>

Edson:
A mi me parece que estás tratando de referenciar a un objeto destruido. En tu procedimiento veo que destruyes formularios directamente. Eso siempre trae problemas. Por lo general debe haber rutimas especializadas para destruir formularios, teniendo cuidado de que los objetos que contienen no sean referenciados luego. Ello puede implicar reiniciar eventos, deshabilitar Timers o destruir previamente algunos objetos problemáticos.

esdonis:
La verdad que no debe ser eso, o al menos no veo porque ya que procedure Tdm.IniSis(); es un procedimiento publico dentro del modulo de datos el cual se ejecuta al inicial la aplicación y si un usuario va a cerrar su seccion para iniciar otra sección y las siguientes lineas deben de cerrar todos los fulmularios abiertos.

Incluso ahora modifique el procedimiento por:
  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;
    Screen.Forms.Free;
  end;

que debe cerrar todos los formularios abiertos y persiste el mismo problema.

Edson:
Y si quitas la parte que cierra los formularios ¿Persiste el problema?

esdonis:
No puedo quitarlos porque caso contrario no me cierra las formularios abiertos

cambie el procedimiento por:

  x := false;
  for i := Screen.FormCount - 1 downto 0 do begin
      if (Screen.Forms.Name <> 'dm') and (Screen.Forms.Name <> 'fconta') then
        Screen.Forms.Free
      else if Screen.Forms.Name = 'fconta' then
        x := true;
  end;
  if not x then Application.CreateForm(Tfconta, fconta);

para cerrar todos los formularios abiertos menos el modulo de datos y el formulario principal y ahora el error me lo da el archivo customform.inc en la linea 1734

TWSCustomFormClass(WidgetSetClass).SetModalResult(Self, Value);

el procedimiento completo de ese archivo es:

procedure TCustomForm.SetModalResult(Value: TModalResult);
begin
  if HandleAllocated and (Value <> FModalResult) then
    TWSCustomFormClass(WidgetSetClass).SetModalResult(Self, Value);
  FModalResult := Value;
end;

Edson:

--- Quote from: esdonis on January 23, 2017, 05:27:14 pm ---No puedo quitarlos porque caso contrario no me cierra las formularios abiertos

--- End quote ---

Solo te dije que quitaras esa parte, como una forma de probar, si el problema está en la gestión de los formularios. No digo que tengas que dejarlo así.  Es parte de la depuración.

Navigation

[0] Message Index

[#] Next page

[*] Previous page

Go to full version