Pascal/Turbo Pascal - tamaño de ficheros

 
Vista:

tamaño de ficheros

Publicado por yke (2 intervenciones) el 05/09/2002 16:06:53
Hola , a ver si alguien me puede responder, tengo el tipico programa estilo agenda, ke guarda los datos en una lista doble, y esta la guarda en un fichero de tipo "file of (lista)" . el caso es ke el programa tiene una opcion ke permite volcar toda la informacion a un archivo .TXT.
ahora viene el problema, el archivo TXT okupa 23K mas o menos, mientras ke el otro (file of tLista) ocupa 260K!!! o_O alguien sabe por ke? o komo hacer ke ocupen menos? gracias
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:tamaño de ficheros

Publicado por Diego Romero (786 intervenciones) el 06/09/2002 04:28:58
No me parece ningún misterio, es simple matemática.
Un integer ocupa 2 bytes, si esta almacenado el valor 1 convertido a texto ocuparía 1 byte nada más mientras que si contiene el número 10000 en texto ocuparía 5 bytes.
Pero el caso más evidente es el de los Strings, si defines una variable de tipo string a secas al volvarla a un archivo con tipo ocupa 255+1 bytes sin importar de qué largo sea la cadena que está almacenada en ese momento, aún si está vacia ocupará 255+1 (el uno es el que almacena el tamaño dinamico), si vuelcas esa variable string a texto solo ocupará lo que mida el largo dinamico de la misma.
Además lo que te ocurre me es muy normal, me a tocado el caso de volcar a txt un archivo de datos de COBOL que ocupa 4 megas y obtener un txt de 100 Kb.
La solución es un almacenamiento más eficiente de los datos, especialmente las cadenas, la mayoría de los motores de bases de datos usan métodos de compresión de cadenas para evitar desperdiciar espacio en el archivo al almacenar repetitivamente el mismo caracter contiguo o evitar almacenar datos superfluos como el caso de los strings, la cola del string no debería almacenarse en disco ya que carece de sentido para el programa que lo lee.
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

otra duda

Publicado por yke (4 intervenciones) el 10/09/2002 16:26:50
ok, gracias, la verdad es ke era logico, nunca se me habia ocurrido, entonces ahora tengo ptra pregunta, ¿mejor trabajar con ficheros de texto? ke es lo ke hace la mayoria de la gente ? ke es lo mas habitual? aparte de los metodos de compresion, gracias
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:otra duda

Publicado por Diego Romero (786 intervenciones) el 11/09/2002 12:04:06
¿Te refieres a usar un archivo de texto como si fuera una base de datos?, olvidalo, los archivos de texto no se pueden acceder en forma aleatoria, fundamental para intentar cualquier tipo de indexación.
Lo ideal es que crees tu propio motor de bases de datos (un MDDB es un conjunto de algoritmos que hacen de interface entre el programa que usa la BD y la BD misma) que te gestione todo lo de la base de datos incluyendo la compresión y descompresión transparente de los datos repetitivos, además de gestionar los indices, la estructura y la consistencia de esos datos. Acepto que es un trabajo arduo asi que mi consejo es no reinventar la rueda y usar un motor de bases de dato que yá esté hecho y tenga resuelto todos esos problemas, he visto en un par de páginas ( http://www.devq.net/pascal/ por ejemplo ) una unidad capaz de manejar archivos en formato dbf (los de clipper, fox, dbase) que es un formato popular y estandarizado.
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