Pascal/Turbo Pascal - BAJAS FISICAS EN ARCHIVO???

 
Vista:

BAJAS FISICAS EN ARCHIVO???

Publicado por Jonathan (1 intervención) el 17/10/2003 06:18:36
Necesito realizar bajas fisicas en un archivo. para eso pido al operador la posicion del registro que quiero eliminar. ¿Como hago para eliminar fisicamente un registro de un archivo(de tipo en este caso)??
Valora esta pregunta
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
0
Responder

RE:BAJAS FISICAS EN ARCHIVO???

Publicado por Diego Romero (786 intervenciones) el 17/10/2003 10:15:26
Hay dos formas de hacerlo, una larga y la otra relativamente corta pero más compleja.
La primera depende de que en los registros de tu archivo incluyas un campo (tal vez de tipo boolean) que indique si ese registro está activo o está lógicamente borrado. Luego cuando quieras quitar esos registros del archivo debes copiar el archivo completo a un temporario, borrar el original, recorrer secuencialmente el temporario traspasando solo aquellos registros que están activos.
La segunda forma es más complicada, debes saber cómo trabajar con aritmética de bytes, saber cuántos bytes ocupa físicamente cada registro entonces te posicionas en el registro a borrar, lees el siguiente y lo copias encima del que borras, luego avanzas al siguiente registro (que será una copia del anterior) y repites la operación, esto hasta acabar el archivo, por último recortas el archivo al principio del último registro poniendo la marca de fin de archivo y luego actualizar la FAT del disco para que no haya inconsistencia de tamaños. Esto es lo más complicado.
La primera solución es la más comunmente usada, por lo general se denomina "packear" el archivo.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

RE:BAJAS FISICAS EN ARCHIVO???

Publicado por César Augusto (182 intervenciones) el 27/10/2003 18:38:16
Solo como comentario yo utilizaba la segunda y una vez que había corrido el ultimo registro que debía permanecer en el archivo ejecutaba la función Truncate para actualizar la FAT.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar