![]() |
![]() |
| Paypal | FTP | CCD | Buscar | Trucos | Trabajo | Foros |
|
|||||||
| Registrarse | FAQ | Miembros | Calendario | Guía de estilo | Temas de Hoy |
![]() |
|
|
Herramientas | Buscar en Tema | Desplegado |
|
#21
|
|||
|
|||
|
puedes usar delphi y /delphi entre [], si es codigo delphi. Creas la form, pero en ningun momento la liberas. Yo lo haria asi:
casi seguro que es eso otra es marca, porque freeandnil si aun no se ha asignado (ni falta que hace)? TBookMarkStr solo es una string, por lo que en principio no te tienes que preocupar de su memoria. El access a nil es debido a eso seguro, pues la liberas y luego intentas trabajar con ella. Si quieres que tenga un valor nulo, simplemente haz marca := '' o marca := nil, pero no la liberes pues se queda desreferenciada en memoria. En tu caso, creo q no hace falta ni siquiera marca := '' pues a lo siguiente ya le das un valor concreto. Tambien creo q te falta un bloque begin end en ComboBox1.Text = 'TODOS' Última edición por coso fecha: 23-07-2008 a las 15:13:59. |
|
#22
|
|||
|
|||
|
He cambiado lo que mas dicho del bloque begin y lo de la variable.
Pero lo del formulario lo he dejado asi
Pero sigue dandome error os dejo la pila. gracias radge Como veis todas las instrucciones son de código nativa menos la 1º empezando por abajo del stack , que es la marcada en rojo. ![]() ![]() |
|
#23
|
||||
|
||||
|
Hay entre las llamadas del callstack algunas especiales:
![]() Creo que eso te puede dar datos sobre el campo del error. ¿Hay algun campo en el Grid en el que esté apareciendo "N"? ¿Tal vez un booleano? Deberías revisar si en algun momento ese campo puede no estar asignado.
__________________
Germán Estévez => Web/Blog Guía de estilo, Guía alternativa Utiliza TAG's en tus mensajes. Contactar con el Clubdelphi ![]() P.D: Más tiempo dedicado a la pregunta=Mejores respuestas. |
|
#24
|
||||
|
||||
|
Hay entre las llamadas del callstack algunas especiales:
![]() Creo que eso te puede dar datos sobre el campo del error. ¿Hay algun campo en el Grid en el que esté apareciendo "N"? ¿Tal vez un booleano? Deberías revisar si en algun momento ese campo puede no estar asignado.
__________________
Germán Estévez => Web/Blog Guía de estilo, Guía alternativa Utiliza TAG's en tus mensajes. Contactar con el Clubdelphi ![]() P.D: Más tiempo dedicado a la pregunta=Mejores respuestas. |
|
#25
|
|||
|
|||
|
Hola otra vez, probablemente ya tengas una instancia de TfrmUnidadesPedidoVenta con el nombre frmUnidadesPedidoVenta que se te crea de manera automatica (project->options->Forms->autocreateForms). Si es asi, al volver a usar ese nombre estas dejando toda la form anterior en memoria desreferenciada. Has probado si con el codigo anterior, tal cual esta, te salta el error? luego, al quedarse sin memoria, te puede saltar en cuqlquier momento. Tambien, query_supvision etc esta todo correcto no? en cuanto a creacion y liberacion.
|
|
#26
|
|||
|
|||
|
Otra cosa: carregadades tambien esta todo correcto? si vas comentando bloques (por ejemplo, que no te cree el form o la parte de las consultas) te salta el error? es un metodo para localizarlo
|
|
#27
|
|||
|
|||
|
Ok pruebo esto , de todas formas lo del formulario lo tengo en un try , me deberia saltar y no lo he visto saltar ninguna vez.
|
|
#28
|
|||
|
|||
|
Bueno, segun la direccion de memoria que te pone (FFFFFFDC), ya casi al final de todo puede que consiga la memoria suficiente para la form, pero luego ya no pueda hacer nada mas, por lo que no tendria que saltar alli ($FFFFFFFF - $FFFFFFDC = $23 = 35 bytes) Por eso que te salte a las 30 o 40 veces. Yo creo que es eso, quiza me equivoque claro esta
. Saludos |
|
#29
|
|||
|
|||
|
#30
|
|||
|
|||
|
si te fijas, el stack son las funciones que se han ido llamando, que se guardan en esta lista. Asi, si quieres mirar donde ha saltado el error, pues va bien para conocer en que funcion. Ahora bien, segun tu dices te pasa a la 30 o 40 vez que pulsas el click, por lo que no es un error digamos inicial, sino uno que se va arrastrando. Asi pues, el stack aunque te diga donde ha saltado, el inicio del error puede estar en cualquier parte. Como ya te he dicho, yo creo que es porque creas algo repetidas veces sin liberarlo: has probado el codigo anterior, tal cual? f variable local, creandola con el create no con el application.createform, y su free? si aun asi te da error, prueba de comentar el bloque de creacion de esa form, a ver si asi te salta. si es el caso, entonces el error debe estar en alguna de las funciones interiores, carregadades, etc...donde quiza estes cargando datos en un objeto que creas repetidas veces pero no liberas cada vez.
|
|
#31
|
|||
|
|||
|
ten en cuenta tambien la vision de Neftali: yo estoy fijo en lo de los 30 intentos, pero segun el stack que el te muestra, el error te saltaria por algo completamente diferente.
|
|
#32
|
|||
|
|||
|
Cita:
Y tambien probé a poner : f := TfrmUnidadesPedidoVenta(create); En esa linia me pone [Error] SupVision.pas(203): Not enough actual parameters Última edición por radge fecha: 23-07-2008 a las 15:00:02. |
|
#33
|
|||
|
|||
|
si bueno,... la sintaxis que es correcta seria -> f := TfrmUnidadesPedidoVenta.Create(nil) o (self), el argumento es el parent form, me debi liar al escribirlo. Igualmente, si al comentarlo (donde lo creas y donde la usas, claro, si es solo donde la creas tendras una excepcion mas) te sigue saltando, es que el error no esta por alla.
Última edición por coso fecha: 23-07-2008 a las 15:16:26. |
|
#34
|
|||
|
|||
|
Cita:
salu2 radge |
|
#35
|
|||
|
|||
|
X) pues tienes faena. saludos.
|
|
#36
|
|||
|
|||
|
No si llevo más de 2 semanas con esto... pero es que no lo veo la verdad... me he trabado con ello.
gracias , radge |
|
#37
|
|||
|
|||
|
mira en el codigo inicial que pusiste, he encontrado errores de los que yo considero graves (la liberacion del string que luego usas, crear una form con un nombre de variable global, probablemente ya creada,...), por lo que, sin animo de despreciar, creo que pueden haber bastantes del mismo tipo por diferentes lugares del proyecto. Le pegaria una repasada general a todo entero teniendo en cuenta :
- no crear forms inecesarias : si solo se usan una vez, usar el autocreate (project->options). Si se han de usar varias a la vez de la misma clase (como por ejemplo seria un preview), entonces si usar el create de las forms. - si se crean, en tiempo de ejecucion, tanto forms como otros objetos, destruirlos en la misma funcion desde donde se han llamado. Vamos, las ultimas lineas de la funcion tendrian que ser del tipo q.Free, f.Free,...(en teoria, si dentro de estas forms no creas nada en tiempo de ejecucion, no hace falta usar el free, pero no esta de mas) - si se cargan datos, tener en cuenta que se liberen una vez usados. Si se sale de la funcion donde se ha creado y cargado, entonces usar una variable global del form directamente y en su create darles la memoria (a todos los que vayas a usar) y en el create del objeto, hacer create(self) , o sea vinculado a la form, y en el evento destroy liberar estos objetos (solo en el destroy). Asi mientras este creada la form tendras esos objetos a mano siempre. - Lo que decia neftali, vigilar que los campos de tus query esten creados y correctamente escritos y llamados, y que se asignen valores de acuerdo a sus tipos. - Y lo que te comente al principio: usar los breakpoints (F5) los watches (Ctrl+F5), F7,F8 , el call stack, y lo de comentar/descomentar. Venga, haber si lo resuelves. Saludos Última edición por coso fecha: 23-07-2008 a las 15:46:52. |
|
#38
|
|||
|
|||
|
Otra manera es usando un administrador de memoria y ir haciendo f7s,f8s...en los momentos en los que se te carguen bloques de memoria exagerados y alla se queden, por alla tendrias el problema (siempre suponiendo q el error sea por agotamiento de memoria, claro)
|
|
#39
|
|||
|
|||
|
Como variable global creo esta "CodiClient" que es una variable que arrastro de un combobox a distintos sitios dentro del mismo formulario.
Lo del auto-create forms solo tengo uno llamado "splash" lo que salta al inicio del programa , solo tengo ese. El trozo este de codigo Código Delphi [-] Application.CreateForm (TfrmUnidadesPedidoVenta, frmUnidadesPedidoVenta); frmUnidadesPedidoVenta.CarregaDades(Cantidad,UnitatsServidesBD); frmUnidadesPedidoVenta.ShowModal; varDades := frmUnidadesPedidoVenta.rebreDades; varUnitatsRestants := frmUnidadesPedidoVenta.rebreUnitatsRestants; frmUnidadesPedidoVenta.Free;
|
|
#40
|
|||
|
|||
|
pues quiza lo mas correcto sea q tengas en autocreate forms todas las forms que vas a usar en el proyecto. O es que las estas creando cada vez que las vas a llamar? si ese es el caso, una vez usadas y cerradas las forms, las destruyes?? porque ten en cuenta que si creas una form y luego vuelves a crearla y llamarla con el mismo nombre de variable sin haber destruido la anterior se queda esta ultima desreferenciada por memoria.
|
![]() |
|
|
Temas Similares
|
||||
| Tema | Autor | Foro | Respuestas | Último mensaje |
| Error Raro sobre archivo "ntdll.dll" que no consigo encontrar el motivo | AGAG4 | Impresión | 1 | 23-11-2007 07:11:17 |
| localizar un registro | vroa74 | Conexión con bases de datos | 3 | 17-08-2007 14:11:23 |
| Localizar un registro | alcides | Varios | 4 | 13-04-2007 20:17:27 |
| Localizar datos con Firebird | joanajj | Firebird e Interbase | 5 | 06-06-2006 00:11:42 |
| RaveReport AccessViolation | raugadel | Impresión | 0 | 03-11-2005 15:32:56 |
|