Dudas con STRUCTS y save/load en fichero externo

Started by FreeYourMind, May 18, 2011, 09:26:05 AM

Previous topic - Next topic

0 Members and 1 Guest are viewing this topic.

FreeYourMind

Muchas gracias Drumpi, te daré el segundo karma cuando pongas un ejemplo.

FreeYourMind

#16
Tengo otro problema, quiero grabar un texto sencillo en un fichero externo, o sea, quiero solo grabar el texto, no el nombre de la variable compilada, tengo este codigo:


texto = "AABC5689EF1E";

file = fopen("texto.txt", O_WRITE);
fwrite(file, texto);
fclose(file);

Lo que quiero grabar en el fichero es solo el texto AABC5689EF1E,
pero me gaba esto (lo intento representar):
'FFNULNULNULAABC5689EF1E'.

O sea, solo quiero saber como grabar un sencillo texto sin meter variables por medio ni tener que despues limpiar la cadena para leer solo lo que quiero.


EDITO:


Duda 2:

Como creo un fichero externo (nuevo, que todavia no existe) sin usar save ?

SplinterGU

asi


import "mod_string";
import "mod_file";

private

char texto[] = "AABC5689EF1E";
int file;

begin

    file = fopen("texto.txt", O_WRITE);
    fwrite(&texto,strlen(texto),file);
    fclose(file);

end


no podes usar string
Download Lastest BennuGD Release: http://www.bennugd.org/node/2

FreeYourMind


SplinterGU

el ejemplo que te puse crea un archivo nuevo, si existe lo pone a 0.
Download Lastest BennuGD Release: http://www.bennugd.org/node/2

FreeYourMind

Vale, mientras probaba tu ejemplo me di cuenta que el fwrite crea el fichero si el file es null, muchas gracias, con esto ya tengo el tema cerrado, stage clear, stage 2 start heheheh

SplinterGU

Download Lastest BennuGD Release: http://www.bennugd.org/node/2

FreeYourMind

Si perdón, viene del c de toda la vida cuando es creado como write

Rein (K´)ah Al-Ghul


Rein (K´)ah Al-Ghul
Infected with the Krieger strain of the Human-MetaHuman Vampiric Virus.

en vez de darme Karma positivo, denme (K´)arma negativ

Drumpi

A ver, ejemplo para Free:

[code]struct var1
   int yo;
   int tu;
end

struct var2
   byte el;
   char ella;
end

//pasamos al código del proceso que guarda variables

//Abrimos el fichero en modo escritura: se creará si no existe, si existe se vaciará
file_id=FOPEN("fichero.dat",O_WRITE);
//Escribimos datos de la primera struct
FWRITE(file_id,var1);
//Escribimos datos de la segunda struct
FWRITE(file_id,var2);
//Cerramos fichero pra guardar los cambios
FCLOSE(file_id);


Si queremos leer, cambiamos el modo de apertura a O_READ, y los comandos FREAD por FWRITE, con los mismos parámetros. Ya está.


Rein: sí que se puede hacer con typedef, de hecho, yo lo recomiendo. Al menos, para mi, el código queda más claro: entiendo una struct como un almacen de datos de tamaño "indefinido" (cada struct es única y no tiene por qué tener los mismos campos) mientras que un typedef ya sabemos lo que es, con una estructura definida. Pero como digo, es sólo una impresión :D


Recomiendo usar siempre FWRITE y FREAD con los ficheros, son equilibrados entre potencia y dificultad de uso respecto a otras funciones, mientras que si vamos a usar Strings, optemos por FPUTS y FGETS. Es más, no hay problemas para mezclarlos con el mismo fichero ;)[/code]
Hala, como con 1001 procesos sólo va a 9 FPS, vamos a meterle 32 veces más, a ver si revienta.
(Drumpi epic moment)

SplinterGU

drumpi, en tu ejemplo, el fwrite y fread, graban los datos con informacion extra (segun corresponda), y era lo que free no queria.
Download Lastest BennuGD Release: http://www.bennugd.org/node/2

FreeYourMind

perdona drumpi por darte trabajo, es que ya tenia todo implementado, sorry..

Por cierto como se borra un fichero fisico ? Se pueden cambiar las propiedades de un fichero por codigo bennu ?

Drumpi

¿Información extra? ¿Qué información extra? no creo que se la invente.
¿Y eso pasa también con tipos definidos?

Para borrar un fichero físico existe RM en la mod_dir , y parece ser que FREMOVE de la mod_file (de esta no estoy muy seguro porque no la había visto hasta ahora). Para cambiar las propiedades no hay ninguna que yo sepa, en Linux puedes usar SYSTEM y llamadas a CHMOD, pero en windows no sé cómo se hace por comandos.
Hala, como con 1001 procesos sólo va a 9 FPS, vamos a meterle 32 veces más, a ver si revienta.
(Drumpi epic moment)

FreeYourMind

Gracias Drumpi, la verdad es que ya lo habia descubierto, de momento no tengo dudas. gracias famigo por tu paciencia de santo.

SplinterGU

Quote from: Drumpi on May 21, 2011, 10:58:16 PM
¿Información extra? ¿Qué información extra? no creo que se la invente.
¿Y eso pasa también con tipos definidos?

Para borrar un fichero físico existe RM en la mod_dir , y parece ser que FREMOVE de la mod_file (de esta no estoy muy seguro porque no la había visto hasta ahora). Para cambiar las propiedades no hay ninguna que yo sepa, en Linux puedes usar SYSTEM y llamadas a CHMOD, pero en windows no sé cómo se hace por comandos.

informacion extra, por ejemplo en las strings, el tamaño de las mismas.
Download Lastest BennuGD Release: http://www.bennugd.org/node/2