Page 1 of 1

Corrupción archivo MEM

PostPosted: Tue Oct 11, 2016 7:14 pm
by Loren
Buenas noches:

¿ Hay algún método para averiguar previamente si un archivo MEM está corrupto antes de abrirlo ?
El problema lo tengo porque si abro un archivo MEM y está corrupto, a pesar de tener un TRY - CATCH, me genera un error 9001 "archivo corrupto" y aborta sin más. Hay veces que los archivos MEM se corrompen.

Code: Select all  Expand view

        TRY
         restore from ruta additive         && archivo MEM para abrir
         msginfo('hola mundo')
       Catch oError
         msgstop('Error al ABRIR el archivo MEM.','')
       END TRY
 


¿ Alguna solución ? Gracias.
Lorenzo.

Re: Corrupción archivo MEM

PostPosted: Tue Oct 11, 2016 7:39 pm
by karinha

Re: Corrupción archivo MEM

PostPosted: Tue Oct 11, 2016 8:10 pm
by Loren
Karinha, gracias por contestar, pero tu respuesta no aclara nada.

Re: Corrupción archivo MEM

PostPosted: Thu Oct 13, 2016 10:53 am
by Loren
Buenas:

ante el desconocimiento de saber con antelación si un archivo MEM está corrupto antes de abrirlo, he optado por:
Generar un archivo de control con FCREATE antes de abrir el archivo MEM y eliminarlo justo despues de abrir correctamente el MEM. Si hay problemas y salta un GPF, al volver a entrar al programa hay un condicional al principio que busca si existe el archivo de control. En caso afirmativo elimina el MEM corrupto y lo sustituye por una copia previamente realizada.... y listo.
Es una solución por ortodoxa porque para el usuario le supone tener que ver este GPF y tener que volver a entrar en el programa.

Un saludo.
LORENZO.

Re: Corrupción archivo MEM

PostPosted: Thu Oct 13, 2016 11:11 am
by hmpaquito
Hola,

Los .mem los considero mala opcion para almacenar datos. Los abandoné en tiempos de Clipper 5. Mejor usar dbfs con registro unico o bien grabar arrays con datos en memos. Esto ultimo tiene una gran potencia puesto que no es necesario crear nuevos campos para nuevos datos.

El error, quizá lo podrias capturar como se explica aqui http://forums.fivetechsupport.com/viewtopic.php?f=6&t=27204&p=151193&hilit=gpf#p151193

Sólo por si sirve.

Saludos


- EDITADO:

Olvidé comentar que otra opción seria, conociendo la estructura del archivo .mem, abrirlo con FOpen() y "recorrer" su estructura, o al menos las "marcas" principales. Rick Spence en alguno de sus libros de Clipper había descrito la estructura de los archivos .mem.