Es posible leer/escribir en fichero binario: byte=1byte, word=2byte??

Started by alicesimu, December 16, 2016, 04:03:35 PM

Previous topic - Next topic

0 Members and 1 Guest are viewing this topic.

alicesimu

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...

DCelso

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

Monstruos Diabólicos

"A PAck of classic GAMEs For BennuGD" en desarrollo
http://code.google.com/p/apagame4be/

alicesimu


Drumpi

¿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.
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)

DCelso

Monstruos Diabólicos

"A PAck of classic GAMEs For BennuGD" en desarrollo
http://code.google.com/p/apagame4be/

alicesimu

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