PDA

Ver la Versión Completa : problema con access violation


david_uh
07-07-2007, 20:57:39
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????
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 http://www.clubdelphi.com/foros/images/botones/edit.gif (http://www.clubdelphi.com/foros/editpost.php?do=editpost&p=210184)

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

form2:=Tform2.create(self);

ahora en el create de form2 escribi esto:

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()


procedure TForm2.FormCreate(Sender: TObject);
begin
probar()
end;


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

gracias por todo