Foros Club Delphi

Foros Club Delphi (https://www.clubdelphi.com/foros/index.php)
-   Varios (https://www.clubdelphi.com/foros/forumdisplay.php?f=11)
-   -   problema con access violation (https://www.clubdelphi.com/foros/showthread.php?t=45581)

david_uh 07-07-2007 20:57:39

problema con access violation
 
buen día caballeros
quizás me puedan ayudar en lo siguiente:

He creado un procedimeinto que se encarga de manipular un listbox agregando items a este. luego este lo llamo desde el evento create del Form. todo normal hasta allí pero cuando creo el form en tiempo de ejecucion me da un ERROR de violación de acceso en el procedimiento que manipula la lista. alguien sabe porque????
Código Delphi [-]
type
  TForm1 = class(TForm)
    PageControl1: TPageControl;
    TabSheet1: TTabSheet;
    TabSheet2: TTabSheet;
    Panel1: TPanel;
    ListBox1: TListBox;
    procedure probar();
    procedure FormShow(Sender: TObject);

  private
    { Private declarations }
  public
    { Public declarations }
  end;

var
  Form1: TForm1;

implementation

{$R *.dfm}
procedure TForm1.probar();
begin

ListBox1.Items.Add('fdgdfg');

end;

procedure TForm1.FormShow(Sender: TObject);
begin
//probar();
Form1.probar;
end;

end.
he porobado declarando el procedimeinto fuera de la clase Tform y nada da el mismo error, sin embargo cuadno manipulo la lista directamente en el evento create no hay problemas.

gracias de antemano por cualquier respuesta

eduarcol 07-07-2007 21:02:32

asi como lo pones a mi no me da error, sera que te lo arroja en otro sitio??

david_uh 07-07-2007 21:04:35

estoy usando delphi 6 y si me arroja error

end.

eduarcol 07-07-2007 21:15:14

No pongo en duda que lo arroje, pero el codigo asi como lo presentas no debe dar problemas, solo sugiero que revises otras partes del programa

david_uh 07-07-2007 21:42:34

ok el error se da al crear el form en tiempo de ejecución es decir cuando mando la order create para crear el form1 ahi me da error pero si pongo form1 en autocreate forms no da error

eduarcol 07-07-2007 21:44:42

ya estamos llegando al grano, estas haciendo Form1.Create?? o TForm1.Create?? yo creo que lo debes tener como la primera, muestra codigo a ver que tal

david_uh 07-07-2007 22:52:37

solucion
 
ok el problema se da uando hago esto
suponiendo que tengo form1 y form2 form2 se crea en tiempo de ejecucion
en el button de form1 que crea y activa form2 esta esto:
Código Delphi [-]
form2:=Tform2.create(self);
ahora en el create de form2 escribi esto:
Código Delphi [-]
procedure tform2.probar();
begin
with form2 do
    listbox1.items.add('dfgdfgs');
end;

utilizo el with porque anteriormente cree el procedimiento probar() fuera de la clase del form asi que lo deje asi ya que da igual "supuestamente" pero al llamar a probar()

Código Delphi [-]
procedure TForm2.FormCreate(Sender: TObject);
begin
probar()
end;

manda error access violation
lo resolvi quitando en las rutinas el WITH

gracias por todo


La franja horaria es GMT +2. Ahora son las 18:35:07.

Powered by vBulletin® Version 3.6.8
Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
Traducción al castellano por el equipo de moderadores del Club Delphi