Cita:
Empezado por DarthGomis
Si se necesita más información avisad y os la proporciono.
|
Hola.
De entrada no se ve el lugar donde le asignas a la variable Form2 la instancia de objeto creada con la expresión "TForm2.Create(self)". Por cierto, evita en todo lo posible el uso de
With (se convirtió en mala práctica conforme creció la sintaxis de Object Pascal y la disponibilidad de recursos de biblioteca).
Si el formulario modal se muestra, quiere decir que en algún punto de tu código, probablemente en el evento OnCreate o algún otro de TForm2, estás realizando la asignación de la nueva instancia de formulario a la variable Form2. Y, por la misma lógica, es probable que al cierre del formulario tengas indicado que éste se destruya. De tal suerte que la sentencia "
nameData := Form2.Edit1.Text;" genera la excepción que nos muestras.
Puede que Form2 siga apuntando al lugar de memoria que tenía la instancia, pero, por la destrucción, Edit1 se ha puesto en Nil (si no mal recuerdo, la liberación nativa de un derivado de TForm pone en blanco los campos componentes
published). Eso explicaría porque la excepción AV es una lectura de la dirección de memoria
00000000, dado que la propiedad Text de la clase TEdit se lee mediante un método virtual; y, siempre que se va a realizar una llamada a un método virtual, Delphi necesita determinar la clase del objeto, cuyo identificador (puntero) se guarda en los primeros bytes de cada instancia. Ya que el objeto Edit1 es Nil, dichos bytes vendrían a ser, erróneamente, los primeros de la memoria RAM, los cuales son inaccesibles para las aplicaciones.
Todo lo anterior es una mera hipótesis, a falta de más información. Pero puede llevarnos a la respuesta de lo que está pasando de aquel lado de mi monitor y que sólo tú puedes ver y compartirnos. Así que te toca mover...
Al González.