Club Delphi  
    Paypal   FTP   CCD     Buscar   Trucos   Trabajo   Foros

Retroceder   Foros Club Delphi > Principal > OOP
Registrarse FAQ Miembros Calendario Guía de estilo Temas de Hoy

Coloboración Paypal con ClubDelphi

Respuesta
 
Herramientas Buscar en Tema Desplegado
  #21  
Antiguo 22-07-2008
[coso] coso is offline
Miembro Premium
 
Registrado: may 2008
Ubicación: Girona
Posts: 1.678
Poder: 0
coso Va por buen camino
puedes usar delphi y /delphi entre [], si es codigo delphi. Creas la form, pero en ningun momento la liberas. Yo lo haria asi:

Código Delphi [-]
var  
      f : TfrmUnidadesPedidoVenta;
begin
    ...
     try
           f := TfrmUnidadesPedidoVenta.Create(self); // corregido
           f.ShowModal;
           ...
           f.free;
     except
        ...

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.
Responder Con Cita
  #22  
Antiguo 23-07-2008
radge radge is offline
Miembro
 
Registrado: may 2008
Posts: 147
Poder: 19
radge Va por buen camino
He cambiado lo que mas dicho del bloque begin y lo de la variable.

Pero lo del formulario lo he dejado asi

Código Delphi [-]
Application.CreateForm (TfrmUnidadesPedidoVenta, frmUnidadesPedidoVenta);
                frmUnidadesPedidoVenta.CarregaDades(Cantidad,UnitatsServidesBD);
frmUnidadesPedidoVenta.ShowModal;
varDades := frmUnidadesPedidoVenta.rebreDades;
varUnitatsRestants := frmUnidadesPedidoVenta.rebreUnitatsRestants;
frmUnidadesPedidoVenta.Free;


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.


Responder Con Cita
  #23  
Antiguo 23-07-2008
Avatar de Neftali [Germán.Estévez]
Neftali [Germán.Estévez] Neftali [Germán.Estévez] is offline
[becario]
 
Registrado: jul 2004
Ubicación: Barcelona - España
Posts: 19.437
Poder: 10
Neftali [Germán.Estévez] Es un diamante en brutoNeftali [Germán.Estévez] Es un diamante en brutoNeftali [Germán.Estévez] Es un diamante en bruto
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.
Responder Con Cita
  #24  
Antiguo 23-07-2008
Avatar de Neftali [Germán.Estévez]
Neftali [Germán.Estévez] Neftali [Germán.Estévez] is offline
[becario]
 
Registrado: jul 2004
Ubicación: Barcelona - España
Posts: 19.437
Poder: 10
Neftali [Germán.Estévez] Es un diamante en brutoNeftali [Germán.Estévez] Es un diamante en brutoNeftali [Germán.Estévez] Es un diamante en bruto
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.
Responder Con Cita
  #25  
Antiguo 23-07-2008
[coso] coso is offline
Miembro Premium
 
Registrado: may 2008
Ubicación: Girona
Posts: 1.678
Poder: 0
coso Va por buen camino
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.
Responder Con Cita
  #26  
Antiguo 23-07-2008
[coso] coso is offline
Miembro Premium
 
Registrado: may 2008
Ubicación: Girona
Posts: 1.678
Poder: 0
coso Va por buen camino
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
Responder Con Cita
  #27  
Antiguo 23-07-2008
radge radge is offline
Miembro
 
Registrado: may 2008
Posts: 147
Poder: 19
radge Va por buen camino
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.


Código Delphi [-]
                   try
                   Application.CreateForm (TfrmUnidadesPedidoVenta, frmUnidadesPedidoVenta);
                   frmUnidadesPedidoVenta.CarregaDades(Cantidad,UnitatsServidesBD);
                   frmUnidadesPedidoVenta.ShowModal;
                   varDades := frmUnidadesPedidoVenta.rebreDades;
                   varUnitatsRestants := frmUnidadesPedidoVenta.rebreUnitatsRestants;
                   frmUnidadesPedidoVenta.Free;
                   except
                       on e : exception do begin
                          ShowMessage ('Clase de error: ' + e.ClassName + chr(13) + chr(13) + 'Mensaje del error: ' + e.Message);
                       end;
                   end;
Responder Con Cita
  #28  
Antiguo 23-07-2008
[coso] coso is offline
Miembro Premium
 
Registrado: may 2008
Ubicación: Girona
Posts: 1.678
Poder: 0
coso Va por buen camino
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
Responder Con Cita
  #29  
Antiguo 23-07-2008
radge radge is offline
Miembro
 
Registrado: may 2008
Posts: 147
Poder: 19
radge Va por buen camino
Mira te muestro la stack , yo siempre busco la 1º función mia no nativa empezando por arriba no ???

De ser asi toi mirando esto.



Responder Con Cita
  #30  
Antiguo 23-07-2008
[coso] coso is offline
Miembro Premium
 
Registrado: may 2008
Ubicación: Girona
Posts: 1.678
Poder: 0
coso Va por buen camino
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.
Responder Con Cita
  #31  
Antiguo 23-07-2008
[coso] coso is offline
Miembro Premium
 
Registrado: may 2008
Ubicación: Girona
Posts: 1.678
Poder: 0
coso Va por buen camino
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.
Responder Con Cita
  #32  
Antiguo 23-07-2008
radge radge is offline
Miembro
 
Registrado: may 2008
Posts: 147
Poder: 19
radge Va por buen camino
Cita:
Empezado por coso Ver Mensaje
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.
Sisi probé a comentar el trozo de código que creo el form y me salta una excepción igualmente.

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.
Responder Con Cita
  #33  
Antiguo 23-07-2008
[coso] coso is offline
Miembro Premium
 
Registrado: may 2008
Ubicación: Girona
Posts: 1.678
Poder: 0
coso Va por buen camino
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.
Responder Con Cita
  #34  
Antiguo 23-07-2008
radge radge is offline
Miembro
 
Registrado: may 2008
Posts: 147
Poder: 19
radge Va por buen camino
Cita:
Empezado por coso Ver Mensaje
si bueno,... la sintaxis que es correcta seria -> f := TfrmUnidadesPedidoVenta.Create(nil) o (self), 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.
Exacto creo que el error esta en otra parte , porque lo he comentado las 5 o 6 lineas donde lo creo , recibo los datos y lo destruyo y sigue saltando la excepción.

salu2 radge
Responder Con Cita
  #35  
Antiguo 23-07-2008
[coso] coso is offline
Miembro Premium
 
Registrado: may 2008
Ubicación: Girona
Posts: 1.678
Poder: 0
coso Va por buen camino
X) pues tienes faena. saludos.
Responder Con Cita
  #36  
Antiguo 23-07-2008
radge radge is offline
Miembro
 
Registrado: may 2008
Posts: 147
Poder: 19
radge Va por buen camino
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
Responder Con Cita
  #37  
Antiguo 23-07-2008
[coso] coso is offline
Miembro Premium
 
Registrado: may 2008
Ubicación: Girona
Posts: 1.678
Poder: 0
coso Va por buen camino
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.
Responder Con Cita
  #38  
Antiguo 23-07-2008
[coso] coso is offline
Miembro Premium
 
Registrado: may 2008
Ubicación: Girona
Posts: 1.678
Poder: 0
coso Va por buen camino
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)
Responder Con Cita
  #39  
Antiguo 23-07-2008
radge radge is offline
Miembro
 
Registrado: may 2008
Posts: 147
Poder: 19
radge Va por buen camino
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;



Código Delphi [-]
var
  frmUnidadesPedidoVenta: TfrmUnidadesPedidoVenta;
  unidades_restantes : integer ;
  FlagCheckSupervisado : string;
implementation

uses SupVision;

{$R *.DFM}

procedure TfrmUnidadesPedidoVenta.CarregaDades(var1,var2: integer);
begin
 UnitatsPedidoVenta := var1;
 UnitatsServidesBD := var2;
end;

function TfrmUnidadesPedidoVenta.rebreDades():String;
begin
  Result := edit1.Text;
end;

function TfrmUnidadesPedidoVenta.rebreUnitatsRestants(): string;
begin
   if (unidades_restantes = strtoint(edit1.text)) then
       FlagCheckSupervisado := 'S'
   else
       FlagCheckSupervisado := 'N';
   Result := FlagCheckSupervisado;
end;

procedure TfrmUnidadesPedidoVenta.ACTUALIZARClick(Sender: TObject);
begin

 if ( strtoint(edit1.text) = 0) then
        showmessage('No es posible añadir 0 unidades ')
 else if ( strtoint(edit1.text) > unidades_restantes) then
        showmessage('El número máximo permitido es ' + inttostr(unidades_restantes) + ' unidades ')
 else
         frmUnidadesPedidoVenta.Close;
end;

procedure TfrmUnidadesPedidoVenta.FormShow(Sender: TObject);
begin
  label3.Caption := inttostr(UnitatsPedidoVenta);
  label4.Caption := inttostr(UnitatsServidesBD);
  unidades_restantes := UnitatsPedidoVenta - UnitatsServidesBD;
  Label5.Caption := inttostr(unidades_restantes);
end;




procedure TfrmUnidadesPedidoVenta.edit1KeyPress(Sender: TObject;
  var Key: Char);
begin
  If Key = #13 then
  ACTUALIZAR.Click;
end;


end.
Responder Con Cita
  #40  
Antiguo 23-07-2008
[coso] coso is offline
Miembro Premium
 
Registrado: may 2008
Ubicación: Girona
Posts: 1.678
Poder: 0
coso Va por buen camino
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.
Responder Con Cita
Respuesta



Normas de Publicación
no Puedes crear nuevos temas
no Puedes responder a temas
no Puedes adjuntar archivos
no Puedes editar tus mensajes

El código vB está habilitado
Las caritas están habilitado
Código [IMG] está habilitado
Código HTML está deshabilitado
Saltar a Foro

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


La franja horaria es GMT +2. Ahora son las 00:50:18.


Powered by vBulletin® Version 3.6.8
Copyright ©2000 - 2026, Jelsoft Enterprises Ltd.
Traducción al castellano por el equipo de moderadores del Club Delphi
Copyright 1996-2007 Club Delphi