void save( char * nombre, int * dato, unsigned int tamaño )


Descripción:

Graba un bloque de datos desde la memoria del programa a un archivo en el disco para recuperarlos después, cuando se requiera, con la función load().

Para ello, la función requiere el nombre del archivo, el desplazamiento dentro de la memoria del ordenador de la variable, tabla o estructura guardada en el disco (el desplazamiento del dato se obtiene con el puntero del nombre del dato) y el número de posiciones de memoria que ocupa dicho dato (lo que se puede obtener con sizeof(nombre del dato)).

Es posible guardar varios datos (variables, tablas o estructuras) si estos se han definido dentro de la misma sección (PUBLIC, PRIVATE o PROTECTED) y de forma consecutiva; en este caso se debe indicar como segundo parámetro el puntero del primer dato, y como tercer parámetro la suma de los sizeof() de todos los datos.

No es necesario especificar una ruta de acceso junto al nombre de archivo.


MAIN_PROGRAM_CDIV
PRIVATE
 int tabla[9],
     contador;

BEGIN_PROGRAM

 set_gfx(GFX_AUTODETECT_WINDOWED);
 set_mode(m320x200);

 write (0, 0, 0, 0, "Pulse [ENTER] para borrar los datos.");
 write (0, 0, 10, 0, "Pulse [ESPACIO] para cargar los datos del disco");
 write (0, 0, 30, 0, "Valores actuales de los datos:");

 for( contador = 0; contador < 9; contador++)
 {
   tabla[contador] = rand(0, 100);
   write_int(0, 0, 40 + (contador * 10), 0, OFFSET tabla[contador]);
 }

 save("../help.dat", tabla, sizeof(tabla));

 LOOP{
        if (key(_enter)){
            for( contador = 0; contador < 9; contador++)
                tabla[ contador ]=0;
        }
        if (key(_space)){
            load("../help.dat", tabla); // Se cargan los datos del disco
        }
        FRAME;
 }

END_PROGRAM

Al inicio del ejemplo se crea una tabla de 10 posiciones (del 0 al 9) con valores aleatorios. Esta tabla se graba en el disco con la función save().

Cuando se pulsa la tecla ENTER se borran los valores de la tabla (se ponen a 0 las 10 posiciones).

Cuando se pulsa la barra espaciadora se cargan los valores de la tabla del disco con la función load().

Para grabar en el mismo archivo tabla[9] y la variable contador se debería haber llamado a la función save() de la siguiente forma:

  save("../help.dat", tabla, sizeof(tabla));

No variando la instrucción de carga (load("../help.dat", tabla);), ya que ésta no requiere el número de datos.


Ver: load() - sizeof()