![]() |
¡¿Breakpoint cuelga aplicación?!
Hola, me sucede una cosa muy extraña y completamente opaca para mí. No tengo ni idea x qué, pero cuando se pincha un botón y comienza la ejecución de su rutina al poner un breakpoint en dicha rutina se rompe la ejecución. Sin dicho breakpoint todo funciona, aparentemente (no puedo pararlo para comprobarlo detalladamente), bien.
Dicha rutina realiza los siguientes pasos: 1. Comprueba que una lista (objeto) no sea vacía. 2. Crea un nuevo formulario (create). 3. Rellena un atrib de otro objeto. 4. Hace el ShowModal (del anterior formulario). 5. Y por último el Free (de dicho formulario). El breakpoint lo coloco en el paso3 y el resultado es que la aplicación se queda "colgada", no muestra el siguiente formulario. ¿Alguna idea de dónde he podío meter la pata? Muchas gracias. |
Saludos
Probablemente sería mas útil que pegues el código en lugar de la serie de pasos. Porque hay varias formas de hacer lo mismo.
|
Cita:
Código:
Form1:=TForm1.Create(Form1); |
Saludos
Bueno para empezar no es sano que mates la aplicacion con ctrl+alt+supr, recuerda que delphi es el que crea la aplicacion y tiene que darle seguimiento.
Si necesitas "matar" la aplicacion en delphi preciona ctrl+F2 o bien menu run--->Program Reset. deja checo tu codigo haber que encuentro raro |
saludos
creo que me quedé igual o peor..... que delphi tienes?
y la función setatrib no existe al menos no así como la escribes aqui.(attrib lleva doble t). Mientras no pongas información completa es muy dificil ayudarte. No tengas miedo por el espacio no se termina (ver guia de estilo :p http://www.clubdelphi.com/foros/guia....php#cervantes). Espero que puedas darnos un poco mas de información. Hasta luego |
Disculpa mi curiosidad y solo por preguntar, despues que se interrumpe la aplicacion pruebas iniciarla de nuevo (F8,F9)?????
|
F8 F9??
jajajajajajaa, excelente pregunta, no se me hubiera ocurrido :p, hay que partir de lo básico.
Si no nos contesta quiere decir que si |
Pues si a veces las respuestas son mas sencillas de lo que parece y uno tratando de resolverla con ecuaciones trigonometricas y demas, para ejemplo un boton jajajaja http://www.clubdelphi.com/foros/showthread.php?t=40679
|
Cita:
Salud OS. |
jajjaja tranquilo que para eso estamos :P
pero no niegues que la cosa estuvo comiquisima |
Cita:
Salud OS. |
jajjaa
Cuando vi el hilo me fijé inmediatamente si no estabamos en el foro de humor :D :D
|
sera que senda se molesto por la broma?
|
Broma
Es muy válida tu pregunta.......
Yo creo que presionó F9 :p |
Cita:
Cita:
Cita:
Cita:
Cita:
Cita:
Cita:
|
Volviendo al inicio del hilo.
Form1.SetAtrib.... no existe. form1 estoy suponiendo que es una instancia de una clase TForm..... ,lo que me parece extraño es que no te marque error. SetAttrib ( con doble T) lo he usado para cambiar atributos de archivos y alguna vez en OLE. Que hace la funcion o procedimiento SetAttrib y attrib que valor recibe?? |
Esto me dá que pensar... y mucho:
Si Form1 no está creado, es equivalente a poner: Así que tú, en algún momento tendrás que liberar a Form1 haciendo un .Free. Si picas por segunda vez en el botón, la cosa se complica más: - Si no has usado FreeAndNil(Form1), es muy probable que Form1 tenga el valor de la antigua ejecución, por lo que jamás se destruirá de memoria (se quedará en el limbo, como se suele decir). - Si has usado FreeAndNil (o Form1.Free; Form1 := nil), entonces estamos en el primer caso que he comentado arriba. El hecho de que el programa se interrumpa al situar un BreakPoint, supongo que viene porque el depurador intenta analizar el valor de todas las variables y al tener valores inconsistentes o referencias circulares, se vuelve un poco loco. El problema viene por la creación y destrucción del "Form1" en tu código, sería bueno que dijeras si liberas Form1, cuando, donde y como. Si dices como debe funcionar el programa (para qué sirve lo que estas haciendo) y demás... muchísimo mejor. Saludos |
Cierto, no me habia fijado.
Generalmente no es necesario que las formas tengan un dueño, probablemente cambiando tu sentencia a Form1:=TForm1.Create(nil); puedas evitarte, si no en este caso si posteriormente, muchos problemas dificiles de encontrar |
Cita:
Cita:
Código:
TForm1 = class(TForm) Cita:
Código:
From1.Free; Cita:
1. lanzar este formulario (Form1) para la recogida de datos del usuario 2. ejecutar un algoritmo genético con dichos datos 3. almacenar los resultados en la base de datos 4. volver al formulario de partida (desde donde se crea Form1). Los pasos 2 y 3 aún están sin implementar, por lo que únicamente debe (Form1) comprobar la corrección de los datos y retornar al formualrio de partida. Cita:
|
Cita:
Saludos. |
La franja horaria es GMT +2. Ahora son las 02:14:19. |
Powered by vBulletin® Version 3.6.8
Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
Traducción al castellano por el equipo de moderadores del Club Delphi