PDA

Ver la Versión Completa : Error en FormCreate


darkerbyte
16-03-2005, 20:26:04
Hola, espero que alguno de ustedes pueda darme una ayuda en esto.

Estoy haciendo una aplicaciòn que utiliza dos forms. el MainForm es el
form1. Cuando inicia la aplcicaciòn debo cargar ciertas configuraciones del programa desde un archivo, asì que programe el evento onformcreate para cargar un archivo y obtener los datos que necesito. si al cargar el archivo o al convertir los datos (de string a entero) ocurre un error entonces mando un mensaje indicando que el archivo de inicio no es valido, inmediatamente, trato de abrir el Form2 ( form2.showmodal() ) que es el form que configura y crea el archivo de inicio que necesito.

El problema es que cuando llamo a la funciòn Form2.showmodal(); desde el formcreate del form1, aunque lo compila bien, al ejecutarlo me manda un error de violaciòn de direcciòn de memoria. ¿de que manera puedo arregla esto? No debo trabajar con el programa hasta que hayan sido estabelcidas dichas configuraciones.

Espero haber explicado correctamente el problema.

Por su tiempo y atención, muchas gracias.

delphi.com.ar
16-03-2005, 20:44:37
El problema es que cuando llamo a la funciòn Form2.showmodal(); desde el formcreate del form1, aunque lo compila bien, al ejecutarlo me manda un error de violaciòn de direcciòn de memoria.
Para cuando haces Form2.ShowModal, Form2 ha sido creado????
Si utilizas autocreate y Form2 esta debajo de Form1 en la lista, no lo creo pues no se ejecutará la creación del Form2 hasta que termine el evento OnCreate del Form1.

Saludos!

darkerbyte
19-03-2005, 02:23:40
Ah !!! tienes razon, el formcreate del form2 esta una linea abajo del formcreate del form1 en el codigo del proyecto. Al parecer lo que tengo que hacer es solo intercambiar esas lineas para que se ejecute primero el Form2.formcreate antes del Form1.formcreate.

Gracias por tu ayuda :)

Pablo Carlos
19-03-2005, 14:06:49
Ah !!! tienes razon, el formcreate del form2 esta una linea abajo del formcreate del form1 en el codigo del proyecto. Al parecer lo que tengo que hacer es solo intercambiar esas lineas para que se ejecute primero el Form2.formcreate antes del Form1.formcreate.

Hola... no creo que el 2 deba estar primero (me imagino si tienes dos form, por lógica el uno debe estar primero) ... deberías poner el siguiente codigo para crear el form 2...

form2 := Tform2.Create(Application) //Crear el form
try
form2.ShowModal; //que lo muestre
finally
form2.Free //que libere de memoria cuando lo cierres
end;


y si son mdi

form2.ShowModal //... sin los parentésis.



Saludos Bye

darkerbyte
22-03-2005, 20:28:24
Pues si, mis estimados colegas, intenté lo que habia dicho antes y efectivamente ya no me marco el error de direccion de memoria pero despues de mostrarme el form2 y que lo cerraba, tambien se me cerraba la aplicación.
Gracias Pablo Carlos, me has dado la solución y ya el programa funciona como debe, :)

delphi.com.ar
29-03-2005, 17:42:43
Hola... no creo que el 2 deba estar primero (me imagino si tienes dos form, por lógica el uno debe estar primero) ... deberías poner el siguiente codigo para crear el form 2...
Que lo cree no quiere decir que lo muestre, lo puede crear y que no sea visible, de todos modos al estar como "AutoCreate" creará todos los forms, algo que me parece orroroso. Personalmente prefiero crear los forms según los necesite.

Saludos!