FTP | CCD | Buscar | Trucos | Trabajo | Foros |
|
Registrarse | FAQ | Miembros | Calendario | Guía de estilo | Temas de Hoy |
|
Herramientas | Buscar en Tema | Desplegado |
|
#1
|
|||
|
|||
Cómo puedo comprobar la existencia de un archivo al cargar mi programa?
Salu2 amigos foristas.
Mi pregunta es como puedo comprobar la existencia de un archivo, en este caso una dll que usa mi programa, antes de que se cargue mi programa. Porque cuando ejecuto mi programa y no encuantra la dll, me aparace un mensaje de error y la aplicación se cierra. Traté de comprobar la existencia del archivo en el OnCreate del formulario principal, pero no funciona, también lo traté de comprobar antes de inicializar la aplicación y me sigue dando error y realmente, no sé como puedo solucionarlo. |
#2
|
|||
|
|||
existe en delphi la funcion:
function FileExists(const FileName: string): Boolean; |
#3
|
|||
|
|||
Ya conozco la instrucción FileExists, la uso así en el OnCreate del formulario:
Código:
Var Directory: String; Begin If Not FileExists( 'Funciones.dll' ) Then Begin Directory := ExtractFileDir( ParamStr( 0 ) ); mxStorage1.ExtractTo( Directory ); End; End; Pero al ejecutar la aplicación me aparece el siguiente mensaje: Cita:
|
#4
|
|||
|
|||
me parece que lo que esta fallando es ExtractFileDir,
no conozco bien como funciona, pero FileExists no te daria ese error |
#5
|
|||
|
|||
El problema no está en ExtractFileDir, porque cambié un poco el código para que me mostrara un mensaje si existe el archivo o no, y aún así me aparece el error de que no existe el archivo Funciones.dll, ni si quiera me muestra el mensaje "existe" o "no existe", que he puesto en los ShowMessage.
Código:
If FileExists( ExtractFilePath( Application.ExeName ) + 'Funciones.dll' ) Then ShowMessage( 'existe' ) Else Begin ShowMessage( 'no existe' ); Directory := ExtractFileDir( ParamStr( 0 ) ); mxStorage1.ExtractTo( Directory ); End; |
#6
|
|||
|
|||
Hola
Me parece que el enlace a la Dll es el problema, si es un enlace estatico pues piensa en cargarlo mejor en forma dinamica, ya que si es un enlace estatico al inicializar la aplicación y antes de que se ejecute cualquier linea de codigo el mismo windows verifica la existencia del Dll y si no existe entonces bota ese error. Si cambias a la asignación dinamica no tendras ningun problema. Suerte |
|
|
|