Ver Mensaje Individual
  #17  
Antiguo 23-04-2016
arriolar arriolar is offline
Registrado
NULL
 
Registrado: oct 2011
Posts: 3
Reputación: 0
arriolar Va por buen camino
¡¡¡Si es Posible guardar datos en el ejecutable!!!

Hola, ya se que es tarde pero le puede servir a otros. Dentro del ejecutable no se puede, pero si a continuacion de el.

Hace tiempo hice una pequeña aplicacion tipo Libreta de Direcciones para llevar en el usb, tener en la Pc o en la nube, los datos los guardaba en un archivo independiente. Al pasarselo a amigos se quejaban que no les abria, por que no sabian que hacia falta copiar la BD tambien.

Asi que por deporte me propuse obtener esto con un unico archivo que contuviese la BD y el ejecutable, que funcionase trasparente al usuario y guardase los cambios efectuados a la BD.

La "Danza" a grosso modo es la siguente:
Creamos el ejecutable y la BD, con otro programa le anexamos a continuacion la BD al programa.

El ejecutable acepta parametros y segun estos actua de distintos modos:

Sin parametros el programa compara una variable que definimos en tiempo de diseño cuyo valor es el tamaño real del ejecutable.

En caso de ser su tamaño mayor asume que contiene en si a la BD, se abre a si mismo en modo lectura y guarda una copia de si mismo con otro nombre (ya veremos luego por que), extrae la BD, llama a ejecutar su copia pasandole como parametro su propia ruta y nombre.

La copia al recibir el parametro ya sabe que es la copia y no el original, el usuario trabaja normal y al momento de cerrarse usa el parametro para borrar el original, se copia a si mismo con el nombre del original y le anexa a continuacion la BD, invoca al programa original con el parametro LIMPIAR y se cierra.

El programa al recibir el parametro LIMPIAR borra la copia, la BD y se cierra.

Este programa lo realice en C++ Con CBuilder5, use rutinas de manejo de archivos binarios (fOpen,fSeek etc)
Recientemente lo hice en Linux con Lazarus y me ahorre las rutinas dichas tirando del comando dd (DiskDump) que es muy potente, tambien le añadi cifrado fuerte a la BD ya que almacena usuarios y contraseñas.
Responder Con Cita