Bennu Game Development

Foros en Español => Mesa de Ayuda => Topic started by: alicesimu on December 16, 2016, 04:03:35 PM

Title: Es posible leer/escribir en fichero binario: byte=1byte, word=2byte??
Post by: alicesimu on December 16, 2016, 04:03:35 PM
Hola buenas,

desconozco si existe alguna manera de poder leer/escribir un fichero binario con fopen
y fread/fwrite si existe la manera de leer/escribir variables de tipo byte,word.

por ahora solo he podido escribir de tipo INT = 4 bytes.

Es posible escribir 1,2 bytes?

es decir para leer una variable de tipo byte(1byte), o leer una variable de tipo word(2bytes).

En div2 me suena el unit_size.

leeo la ayuda: http://wiki.bennugd.org/index.php?title=Fread

y no me queda claro si se puede o no... veo que existe 2 maneras...
Title: Re:Es posible leer/escribir en fichero binario: byte=1byte, word=2byte??
Post by: DCelso on December 16, 2016, 04:51:15 PM
siempre puedes usar la función genérica y especificar el tamaño de bytes a leer.


INT
fread ( <VOID POINTER data_pos> , <INT length> , <INT filehandle> )

local
int handle; 
byte unbyte;
byte dosbytes[2];
begin
    handle=fopen(loadpath,O_READ); fread(&unbyte,1,handle); fread(dosbytes,2,handle); fclose(handle);
end




o bien usar los tipos


local
int handle; 
byte unbyte;
word dosbytes;
begin
    handle=fopen(loadpath,O_READ); fread(handle, &unbyte); fread(handle, &dosbytes); fclose(handle);
end

Title: Re:Es posible leer/escribir en fichero binario: byte=1byte, word=2byte??
Post by: alicesimu on December 16, 2016, 08:32:32 PM
Genial!!! graciaas!! es mas sencilo de lo que me parecia
Title: Re:Es posible leer/escribir en fichero binario: byte=1byte, word=2byte??
Post by: Drumpi on December 17, 2016, 04:16:03 PM
¿Pero el FREAD con el tamaño de datos no se había eliminado?

De todas formas, FREAD y FWRITE, usando la variable, no sólo te permite guardar un BYTE o un WORD, si creas tu propio TYPE también puedes usarlo de forma transparente (aunque no se debe si dicho tipo definido contiene punteros o STRINGS).
Es similar a lo que hacen las funciones SAVE y LOAD, solo que puedes seguir añadiendo/leyendo más datos, hasta que cierres el fichero.

Consejo aparte: no os dejeis el fichero abierto mucho tiempo. Abridlo, leedlo/modificadlo y cerrarlo en un solo frame. Mantenerlo abierto puede provocar inestabilidad en algunos sistemas (GP2X, por ejemplo), así que guardad la información en memoria, y usad los ficheros solo el tiempo estrictamente imprescindible.
Title: Re:Es posible leer/escribir en fichero binario: byte=1byte, word=2byte??
Post by: DCelso on December 17, 2016, 04:57:44 PM
Vale papá.
Title: Re:Es posible leer/escribir en fichero binario: byte=1byte, word=2byte??
Post by: alicesimu on December 17, 2016, 06:08:34 PM
A mi me da la sensación mala cuando dejo el fopen abierto mas de frame, realmente intento cerrarlos de forma inmediata después de leer o escribir.

Me gusta leer y escribir los datos necesarios, hace mucho que no uso save/load es típica de div2