Foros Club Delphi

Foros Club Delphi (https://www.clubdelphi.com/foros/index.php)
-   Varios (https://www.clubdelphi.com/foros/forumdisplay.php?f=11)
-   -   Generan Archivos innecesarios involuntariamente (https://www.clubdelphi.com/foros/showthread.php?t=41577)

sanfer1ec 20-03-2007 00:50:28

Delphi genera archivos involuntariamente DEL#.MB
 
1 Archivos Adjunto(s)
Estimados

Tengo una pregunta antes que un inconveniente, mi aplicacion delphi tengo por ejemplo dentro de una folder c:\desarrollo\aplicacionv1, y dentro de estas estan todas las formas y todos los archivos de delphi incluido el exe, pero al momento que ejecuto en el mismo directorio aparecen archivos con el siguiente formado Del#.MB, en donde # es un número secuencial que me ha llegado hasta el 30 y no se borran despues de cerrar la aplicación.

ahora que genere ya los instaladores dejo un acceso directo en el escritorio de la PC y resulta que ahi tambien me genera estos archivos y se llena el escritorio de la PC.

Si alguien me puede ayudar por favor, gracias.
Adjunto los archivos en un Zip para que lo puedan ver.

Héctor Randolph 20-03-2007 01:26:26

Según recuerdo esos archivos se crean si trabajas con un Cache, cuando inicias una sesión en la base de datos se crea un archivo temporal por cada tabla que usas con actualizaciones en cache, si cierras correctamente la sesión el archivo temporal se elimina. Si en tu caso no se eliminan los archivos temporales es posible que la sesión no se ha cerrado adecuadamente.

Por otra parte cuando creas un acceso directo a tu aplicación, debes indicarle cuál es el directorio de trabajo para que los archivos temporales se guarden en esa carpeta y no en el escritorio.

Saludos.

sanfer1ec 21-03-2007 02:50:20

Gracias por tu respuesta

Y tienes razon uso el cache en las tablas de la BD, pero una pregunta, a que te refieres con cerrar la sesion correctamente, lo que lo que yo estoy haciendo es cerrando la aplicacion con
Código Delphi [-]
Application.Terminate.

Héctor Randolph 21-03-2007 04:15:21

Disculpa me exprese mal, lo que en realidad queria decir es que debes utilizar los métodos ApplyUpdates o CommitUpdates adecuadamente en la base de datos y así mismo los métodos Commit y RollBack para asegurarte que no dejas ninguna actualización pendiente en el cache antes de cerrar tu aplicación.

En la ayuda de Delphi vienen algunos ejemplos acerca del manejo de estas instrucciones.

Saludos

sanfer1ec 22-03-2007 00:47:52

Gracias por tu pronta respuesta

Pienso que lo estoy manejando bien, por ejemplo yo pongo las siguientes instrucciones:

Código Delphi [-]
dm.DB.StartTransaction;
  try
    dm.t_cliente.ApplyUpdates;
    dm.DB.Commit;
    dm.t_cliente.CommitUpdates;
    Bbt_sucursal.Enabled:=True;
    frm_main.status_barra(1);
    except
    on E: Exception do
      begin
      dm.DB.Rollback;
      frm_main.status_barra(2);
      frm_main.Muestra_excep(E.Message,E.InstanceSize,'FRM_CLIENTE');
      end;
    end;

Y con eso eso visto que aparecen y desaparecen archivos, pero algunos no han desaparecido y se quedan ahi en la carpeta en la que se estan ejecutando, por eso era mi inquietud si he podría borrar de alguna manera al cerrar la aplicación, y no se si eso además es factor para que despues de compilar algunas veces me muestra un mensaje en el que dice que no hay suficinete memoria y lo que me toca hacer es reiniciar la PC y comenzar de nuevo, si me puedes ayudar con esto tambien sería genial.
Te agradezco mucho.

Héctor Randolph 22-03-2007 01:07:48

Vamos a suponer que algo falla justo en la línea que hace dm.DB.Commit;, entonces las líneas posteriores no se ejecutarán y saltará a la sección de except, luego entonces aunque se ejecuta el RollBack no llegas nunca al CommitUpdates que es quien se encarga de limpiar el cache, por lo tanto el archivo temporal no se eliminará.

Espero que sea de utilidad, hace mucho que no uso tablas con actualizaciones en cache :o

Saludos

sanfer1ec 30-03-2007 15:09:51

Tienes toda la razon, estoy manejando excepciones, y justamente en un momento determinado controlo esta excepción si no sucede algo y se me pasa sin realizar el commit, estoy teniendo el problema de que si cambio de lugar al commit, en cambio si no sucede la excepción me dar error.

Voy a intentar cambiar de lugar y alternar entre varias alternativas para ver si se soluciona,

Gracias

xio 14-02-2008 10:39:06

Lograste solucionar el problema? A mi me pasa algo parecido pero no logro averiguar la solucion. Os explico:

La aplicacion esta en un servidor y en los equipos clientes hay un acceso directo a esta. El problema es que al imprimir los listados es necesario realizar una consulta para obtener la informacion a listar y esto genera unas tablas temporales, 2 exactamente, y se generan en el escritorio. Al finalizar la impresion del listado una de las tablas se elimina pero la otra se queda en el escritorio y si se intenta eliminar no lo permite da un mensaje diciendo que esta siendo utilizada por otro programa.

He comprobado si cierro bien la consulta y lo hago bien intendo hacer un Query.Delete y un Destroy no da resultado.

He pensado que pueda ser algo de permisos entre el servidor y los clientes pero hay ya varias aplicaciones montadas de esta misma forma y no me dan este problema.

Un saludo!


La franja horaria es GMT +2. Ahora son las 20:50:34.

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