Excelente, trip. :up:
Estos viejos programas para DOS... CERO optimización! Cómo puede ser que 260 megas se compriman en 28? Ni que fuera un código fuente...
Debe tener mucha DB el soft (las DB se comprimen muchismo pq el 90 % no son optimizadas, sino que para acelerar la carga/descarga por cada registro dejan XX caracteres sin improtar la canidad efectiva)
Ejemplo:
Nombre: 25 caracteres
Domicilio: 25 caracters
Telefono: 13 caracteres
DNI: 8 caracteres
Resulta que te llamas "José García" (11 car.), Vivis en calle "Vidt 24" (7 c) tu tel es "01112341234" (11c) y tu DNI es 7.123.456 (7c) al final de cada campo el programa deja 14, 18, 2, 1 car. respectivamente, por lo que tenes 35 caracteres al pedo en 71 caracteres. Por eso la compresión que se obtiene
Cita de: Camello_ARDebe tener mucha DB el soft (las DB se comprimen muchismo pq el 90 % no son optimizadas, sino que para acelerar la carga/descarga por cada registro dejan XX caracteres sin improtar la canidad efectiva)
Ejemplo:
Nombre: 25 caracteres
Domicilio: 25 caracters
Telefono: 13 caracteres
DNI: 8 caracteres
Resulta que te llamas "José García" (11 car.), Vivis en calle "Vidt 24" (7 c) tu tel es "01112341234" (11c) y tu DNI es 7.123.456 (7c) al final de cada campo el programa deja 14, 18, 2, 1 car. respectivamente, por lo que tenes 35 caracteres al pedo en 71 caracteres. Por eso la compresión que se obtiene
si... pero creo que eso pasa con algunas DB segun con el programa q las hagas.. porque manejan mal el uso de variables...
ChaMeR
Entendido 100% Camello. :up:
Es tal cual!
Chamer.. pero por mas ke vos manejes las variables.. si vos determinas a la variable "nombre" como un string de 25 caracteres... le tiene ke guardar los 25 lugares.. no es problema de la base..
En si es cuestión de estructura de los archivos de la base de datos. Si caa campo fuera de tamaño variable, cuando lo modifcas (siguiendo el ejemplo anterior de "José García" a "José L. García" el soft de bases de datos tiene que leer todo el archivo, escribir todo antes del registro que modifcas, cambiar los datos que se modifican y vovler a escribir el resto de la DB, lo que hace que en bases relativamente grandes necesites mucha memoria y/o espacio temporal en disco, en cambio dejando tamaños de cmapos fijos, cuando modifcas, fija el puntero de escritura en la parte del archivo donde esta el campo a modificar, reescribe los datos -aprovechando el espacio libre- y listo no toca al resto del file, con mnenos memoria, más veloidad e impresindible para sistemas multiusuario)
:mrgreen:
edit: la verdad que aporta un gracias, porque habia cosas que no sabia y con las explicaciones exactas que han puesto personas como camello he aprendido un poquito mas
Jesse: QUe aporta Tu MSG??? Además de Robar POSt??? Te sugiero que lo borres
Es cierto Jesse, no da... Ni siquiera venías siguiendo el hilo del post!
lean el edit....ahi explico
Chamuyo Mal pero bueh. No soy juez de nadie
pone todo lo que estes usando en una carpeta y copialo utilizando xcopy, seria:
xcopy C:\tudirectorio /e/s
PD: Jesse no robes post viejo
Cita de: Billy Gatesxcopy C:\tudirectorio /e/s
El /e es para que copie directorios y subdirectorios...... El /s qué hacía?
Cita de: FiGuChamer.. pero por mas ke vos manejes las variables.. si vos determinas a la variable "nombre" como un string de 25 caracteres... le tiene ke guardar los 25 lugares.. no es problema de la base..
la idea es que se genere una array de "i" caracteres y que haya una sentencia i++ q se ejecute cada vez que agregas una letra a la variable y cuando le des a "aceptar" se genere un array con la cantidad de caracteres sino en ves de ocon un i++ con una funcion que cuente la cantidad de caracteres que hay antes del \0 y q dependiendo de la cantidad cree un array igual a la cantidad de caracteres...
Espero q se haya entendido
ChaMeR
Cita de: ChaMeRCita de: FiGuChamer.. pero por mas ke vos manejes las variables.. si vos determinas a la variable "nombre" como un string de 25 caracteres... le tiene ke guardar los 25 lugares.. no es problema de la base..
la idea es que se genere una array de "i" caracteres y que haya una sentencia i++ q se ejecute cada vez que agregas una letra a la variable y cuando le des a "aceptar" se genere un array con la cantidad de caracteres sino en ves de ocon un i++ con una funcion que cuente la cantidad de caracteres que hay antes del \0 y q dependiendo de la cantidad cree un array igual a la cantidad de caracteres...
Espero q se haya entendido
ChaMeR
El tema no pasa por el uso de las variables en si. Vos podés optimizar todo lo que quieras en el código de un programa y sólo vas a lograr complicarte la vida ya que, a la hora de almacenar esos datos, te vas a encontrar que practicamente todos los administradores de DB (o DBD) manejan registros de longitud fija, tal como te explicó camello.
Entonces, aunque optimices las variables en el uso interno de un programa, logrando, por ejemplo, tener 18 caracteres en el nombre, a la hora de grabar esa variable en la DB, ocupará los 25 caracteres (por ejemplo) definidos al diseñar la Base de Datos.
Exactamante... Chamer, se entiende lo que decís, pero este 'problema' no es acerca del uso de las variables en memoria; sino de las especificaciones del tipo de archivo que se está guardando.
Si el string en memoria es de 25 caracteres, pero yo sólo usé 18, tendría que guardar los 25. Si guardo los 18 sólamente, e inmediatamente después guardo otros datos, en el momento de levantarlos del archivo se va a leer cualquier cosa... Porque el programa va a querer levantar 25 caracteres; va a leer 18 que corresponden a lo que está buscando, y 7 de otros datos. Al procesarlos, va a mostrar cualquier cosa.
O algo así. :P
Saludos,
Pepo