PDA

Ver la Versión Completa : problemas con execandwait


eduarcol
02-02-2004, 18:57:28
hola a todos, estuve buscando en los foros antiguos una opcion que me pertima ejecutar una aplicacion y esperar que esta termine, encontre este hilo http://www.clubdelphi.com/foros/archivo/viewtopic.php?t=20317&start=0&postdays=0&postorder=asc&highlight=ejecutar%20esperar, funciona muy bien, el problema es el siguiente:
Tengo un sistema MDI esa funcion la ejecuto desde una MDICHILD al cerrar esta MDICHILD(luego de ejecutar la funcion) el MDIFORM no me deja entrar a ninguna de sus opciones(queda colgado, pero solo la aplicacion no el windows) alguien sabe qie pueda pasar. saludos de antemano

delphi.com.ar
02-02-2004, 19:07:04
Es que precisamente ese procedimiento, lo que hace es detener el hilo de ejecución, la aplicación no está colgada, esta esperando que se termine de ejecutar el otro proceso.
Si no quieres que esto suceda, puedes probar con un WinExec tradicional, o con un CreateProcess pero de otra forma.

Saludos!

eduarcol
02-02-2004, 19:19:00
creo que no me explique bien. lo que yo quiero precisament es q me detenga la ejecucion, el problema esta es que a lo qe cierro la ventana MDICHILD desde donde hago el llamado el form Padre es el que queda colgado, o sea despues de ejecutarse queda de nuevo activa el mdichild pero a lo que cierro esta es que se me cuelga el padre

delphi.com.ar
02-02-2004, 21:18:23
Discúlpame... pero sigo sin entenderte.
¿Porqué no nos pones código de ejemplo?

eduarcol
02-02-2004, 22:58:02
disculpenme el desliz que tuve, pero no es culpa del procedimiento, este va de las mil maravillas, el problemas es el siguiente:

Tengo un formulario MDICHILD, en este tengo un componente txObservaciones, dentro del formulario tengo un procedimiento donde declaro un objeto Observaciones: TStringList, los uso de la siguiente manera:

Observaciones := TStringList.Create;
Observaciones := TStringList(txObservaciones.Lines);
...
//Sentencias
...
FreeandNil(Observaciones);

Ahora a lo que se destruye el FOrm da una excepcion dice: txObservaciones "has not parent window"
ahora si yo elimino una de estas lineas
//Observaciones := TStringList(txObservaciones.Lines);

o

//FreeandNil(Observaciones);

me funciona bien, alguna idea de lo que pueda pasar??

delphi.com.ar
03-02-2004, 15:26:22
Estas haciendo lío... ;)

Supongo que txObservaciones es un TMemo o similar, tu estas creando un nuevo TStringList que se lo asignas a la variable Observaciones, inmediatamente luego de esto pierdes la referencia a este TStringList porque a la variable Observaciones le asignas los Lines del txObservaciones. El problema seguramente se producirá cuando liberes el Observaciones que indirectamente estas destruyendo el Lines de txObservaciones. Esto indudablemente producirá errores dentro del txObservaciones.
No entiendo la lógica pero creo que puedes prescindir de la variable Observaciones accediendo directamente a txObservaciones.Lines.

Saludos!

eduarcol
03-02-2004, 20:49:09
disculpenme amigos del foro, he hecho el peor papel de novato, he trabajado con esto varias veces pero en verdad no entendia lo q sucedia, ahora que lo veo claro con la explicacion me doy cuenta de la metida de pata que estaba haciendo, espero no volver a pasar por esto :rolleyes:, gracias a delphi.com.ar por la ayuda :p