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...
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
Genial!!! graciaas!! es mas sencilo de lo que me parecia
¿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.
Vale papá.
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