Club Delphi  
    Paypal   FTP   CCD     Buscar   Trucos   Trabajo   Foros

Retroceder   Foros Club Delphi > Principal > Varios
Registrarse FAQ Miembros Calendario Guía de estilo Buscar Temas de Hoy Marcar Foros Como Leídos

Coloboración Paypal con ClubDelphi

Respuesta
 
Herramientas Buscar en Tema Desplegado
  #1  
Antiguo 15-09-2007
nfrfabian nfrfabian is offline
Miembro
 
Registrado: ago 2006
Posts: 55
Poder: 20
nfrfabian Va por buen camino
Hola, paldave. Te comento que hice la prueba con otro form de la siguiente forma:

if not (resfact is Tresfact) then
begin
resfact := Tresfact.Create(nil);
try
resfact.ShowModal;
finally
resfact.Free;
end;

De esta forma solo se muestra el form la primera vez. Por eso despues probe de esta forma:

resfact := Tresfact.Create(Application);
try
resfact.ShowModal;
finally
freeandnil(resfact);
end;

De esta forma el form se mostror correctamente cerca de 20 veces hasta que la aplicacion se cerro. No me mostro ningun mensaje de error (seguro que no mostro el error porque la instruccion esta dentro de un try), pero igual se cerro, lo que me lleva a pensar en tu comentario de que no es problema de creacion del form sino de algun componente del mismo.

Hice la prueba como vos decis pero delphi no reconoce el parametro self, probe con nil y application, y solo se ejecuta bien la primera vez en la segunda aparece el mesaje de error access violation, pero no el mismo que cierra la aplicacion porque me muestra el mesaje pero la aplicacion sigue funcionando, sin mostrar la ventana pero funcionando. A continuacion como quedo:

if not assigned(resfact) then
resfact := Tresfact.Create(Selft);
resfact.ShowModal;
resfact.Free;
(no se ejecuta porque delphi no reconoce el parametro Self)

if not assigned(resfact) then
resfact := Tresfact.Create(nil);
resfact.ShowModal;
resfact.Free;
y
if not assigned(resfact) then
resfact := Tresfact.Create(application);
resfact.ShowModal;
resfact.Free;

(solo se ejecuta bien la primera vez. La segunda aparece el mesaje de error access violation, el form no se muestra pero la aplicacion sigue funcionando.

Una consulta: el que yo haya puesto dos instrucciones que no conosco en el evento onclose y ondestroy, podra producir el error?

De esta forma el form se mostro correctamente mas de 20 veces:

resfact := Tresfact.Create(Application);
try
resfact.ShowModal;
finally
freeandnil(resfact);
end;

en el evento onclose puese esta instruccion:
action:= caFree;

en el evento ondestroy puse:
self:= Nil;

Estas dos instruciones las saque de algun post, las puse porque alguien dijo que esto puede solucionar algunos problemas que se pueden producir cuando uno crea los form en forma manual. No creo que afecte para nada el funcionamento pero por las dudas consulto.

Volviendo al comentario de que el problema esta en algun componente del form, les consulto esto:
El que en el evento onshow del form tenga varias instrucciones, funciones, dos de estas funciones realizan consultas a la base de datos. Podra producir el error?
Tampoco creo que sea esto porque en los demas form no tengo este problema. Pero talvez es esto. Por favor, escucho consejos, sugerencias. Muchas gracias.
Responder Con Cita
  #2  
Antiguo 16-09-2007
Avatar de Al González
[Al González] Al González is offline
In .pas since 1991
 
Registrado: may 2003
Posts: 5.610
Poder: 32
Al González Es un diamante en brutoAl González Es un diamante en brutoAl González Es un diamante en brutoAl González Es un diamante en bruto
Smile

¡Hola!

Fuera de tema: Cuando leí el título pensé que se trataba de grabar algo, pero veo que quisiste escribir grave (grande, de mucha entidad o importancia). Una revisión a la ortografía no estaría mal antes de enviar los mensajes, con todo respeto.

Un abrazo.

Al.
Responder Con Cita
  #3  
Antiguo 17-09-2007
nfrfabian nfrfabian is offline
Miembro
 
Registrado: ago 2006
Posts: 55
Poder: 20
nfrfabian Va por buen camino
hola, Al González.Tenes razón. Pido perdon por mis errores de ortografía. Siempre fuí malo para ese tipo de cosas.
Responder Con Cita
  #4  
Antiguo 18-09-2007
Avatar de paldave
paldave paldave is offline
Miembro
 
Registrado: ago 2007
Ubicación: Uruguay
Posts: 148
Poder: 19
paldave Va por buen camino
¿Podrías poner el código completo de tu form para analizarlo?
Responder Con Cita
  #5  
Antiguo 18-09-2007
nfrfabian nfrfabian is offline
Miembro
 
Registrado: ago 2006
Posts: 55
Poder: 20
nfrfabian Va por buen camino
hola paldave. Te comento que poner todo el codigo del form me parece mucho porque el solo el form que hace la llamada con showmodal tiene mas de 5000 lineas. Pongo solo parte del codigo del boton que hace la llamada:



Código Delphi [-]
...
if (preser[ultimopre5].indicli <> 0) then
begin

//resfact.showmodal;
{
if not (resfact is Tresfact) then
begin
resfact := Tresfact.Create(nil);
try
resfact.ShowModal;
finally
resfact.Free;
end;
}
{
with Tresfact.Create(nil) do
try
ShowModal();
finally
Free();
end;
}
resfact := Tresfact.Create(Application);
try
resfact.ShowModal;
finally
freeandnil(resfact);
end;
{
if not assigned(resfact) then
resfact := Tresfact.Create(selft);
resfact.ShowModal;
resfact.Free;
}
end;
...








siendo preser un tipo de datos propio que es una vector. Quizas el error viene por ese lado porque al ser preser una variable global, en el el evento onshow del form resfact busco datos en la variable y si el indice del vector no es correcto se produce el access violation (En realidad esto me paso a veces pero generalmente, la aplicacion me muestra el error y despues sigue funcionando, no como ahora que directamente se cierra.
Lo que hice fue en el evento onshow de resfact poner lo siguiente:



Código Delphi [-]
if ultimopre5 <= 200 then
begin
idnombre := preser[ultimopre5].idnombre;
...
end;







De esta forma la aplicacion no se cerro repentinamente en algunas pruebas, pero no estoy seguro que lo que hice fue solucionar el problema, o solo es cuestion de tiempo para que se produzca de nuevo.
Responder Con Cita
  #6  
Antiguo 18-09-2007
nfrfabian nfrfabian is offline
Miembro
 
Registrado: ago 2006
Posts: 55
Poder: 20
nfrfabian Va por buen camino
hola paldave. Te comento que poner todo el codigo del form me parece mucho porque el solo el form que hace la llamada con showmodal tiene mas de 5000 lineas. Pongo solo parte del codigo del boton que hace la llamada:


Código Delphi [-]
...
      if (preser[ultimopre5].indicli <> 0) then
      begin

        //resfact.showmodal;
        {
        if not (resfact is Tresfact) then
        begin
          resfact := Tresfact.Create(nil);
        try
          resfact.ShowModal;
        finally
          resfact.Free;
        end;
        }
        {
        with Tresfact.Create(nil) do
          try
            ShowModal();
          finally
            Free();
        end;
         }
        resfact := Tresfact.Create(Application);
        try
          resfact.ShowModal;
        finally
          freeandnil(resfact);
        end;
         {
         if not assigned(resfact) then
          resfact := Tresfact.Create(selft);
         resfact.ShowModal;
         resfact.Free;
         }
      end
...







siendo preser un tipo de datos propio que es una vector. Quizas el error viene por ese lado porque al ser preser una variable global, en el el evento onshow del form resfact busco datos en la variable y si el indice del vector no es correcto se produce el access violation (En realidad esto me paso a veces pero generalmente, la aplicacion me muestra el error y despues sigue funcionando, no como ahora que directamente se cierra.
Lo que hice fue en el evento onshow de resfact poner lo siguiente:



Código Delphi [-]
...
if ultimopre5 <= 200 then
begin
  idnombre := preser[ultimopre5].idnombre;
end;
...







De esta forma la aplicacion no se cerro repentinamente en algunas pruebas, pero no estoy seguro que lo que hice fue solucionar el problema, o solo es cuestion de tiempo para que se produzca de nuevo.
Responder Con Cita
Respuesta


Herramientas Buscar en Tema
Buscar en Tema:

Búsqueda Avanzada
Desplegado

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
mostrar propiedades de Form Koder OOP 3 07-09-2007 01:09:11
Error muy grave de Google ArdiIIa La Taberna 1 24-06-2007 00:08:04
Error grave en Delphi 8 murci OOP 0 03-03-2004 10:30:20
Mostrar un mensaje despues de la visualización de un form __cadetill Varios 13 15-12-2003 23:43:14
Un grave error por no pensar (ZEOS) Viet Conexión con bases de datos 1 11-09-2003 21:49:38


La franja horaria es GMT +2. Ahora son las 21:00:58.


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