Page 1 of 1

Corrupción archivo MEM

Posted: 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

        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

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

Re: Corrupción archivo MEM

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

Re: Corrupción archivo MEM

Posted: 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

Posted: 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 _ para nuevos datos.

El error, quizá lo podrias capturar como se explica aqui http://forums.fivetechsupport.com/viewt ... pf#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.