Parchear un fichero (cambiar un byte cualquiera de un fichero)
0000-00-00 00:00:00
function CambiarByte(fichero : string; posicion : longint; viejo,nuevo : byte) : boolean; var f : file of byte; aux : byte; begin result:=true; assignfile(f,fichero); reset(f); seek(f,posicion); read(f,aux); if auxviejo then result:=false // Error!!!! else begin seek(f,posicion); write(f,nuevo); end; closefile(f); end;
Asi si queremos cambiar el byte 800 del fichero 'prueba.bin' que es 75 cuando deberia ser 27 hacemos la llamada:
if CambiarByte('prueba.bin',800,75,27) then perfecto else el byte a cambiar no era el que deberia
Anonimo (25/02/2005, 17:24) Hola Saiyine, Me ha gustado mucho tu página, sobre todo porque ofreces soluciones rápidas y prácticas. No soy muy ducho en la programación, apenas la uso como herramienta para solucionar algunos problemas, de modo que apenas domino funciones elementales, lo que me ha impedido solucionar el problema que te comento a contiuación, que tiene cierta relación con este que ofreces en tu página (estoy usando delphi 5.0). Yo necesito trabajar con un archivo, para leer un byte, por ejemplo. Cuando el archivo está en el HD no hay problemas, el reset para abrirlo funciona OK, pero cuando el archivo está en un CD, da error. La verdad es que no he encontrado como solucionar este problema. Te agradeceré si me das una ayuda o guia para abordarlo. Y gracias de antemanos, geovannis |
Saiyine (27/02/2005, 12:57) ¡Hola! Normal que no lo hayas encontrado, la solución está bastante escondida: mete entre el assignfile y el reset la linea FileMode := 0;, que le indica al delphi que tiene que abrir el fichero en solo lectura. ¡Perdón por la tardanza en responder! |