PARCHEAR UN FICHERO (CAMBIAR UN BYTE CUALQUIERA DE UN FICHERO) - .: .: Saiyine :. :.

Parchear un fichero (cambiar un byte cualquiera de un fichero)

Por Saiyine Enviar correo el 0000-00-00 00:00:00 - Secciones:  DELPHI  - Enlace permanente: 492

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!

Otras entradas de la web que podrian interesarte:

Gravatar 4356
Banderita Alex (2010-04-08 08:13:43)

:OO Hola man, soy un aficionado a la programacion, y estoy haciendo un programa que me permita reducirle el tamaño a los ficheros es decir como un compresor y segun he averiguado la terminacion de un fichero es EOF, lo que quiero es poner estas tres letras en un byte intermedio del fichero.

Como puedo hacerlo????

Gravatar 4357
Banderita Saiyine (2010-04-08 10:24:26)

EOF no es realmente un byte real, sino una "señal". Dime en que lenguaje lo necesitas y te lo busco, pero lo normal es que se llame Truncate, como en este ejemplo en Delphi.

o o o o 


Tu nombre (Nick):

Tu correo (Email):
  Necesario para tu gravatar!

Tu página (URL):

Escribe aqui tu comentario:

       :noworry: :roll: :huh: :push: :OO 8) 8O :( :) :? :D :P :o :x :| ;) ^^ xD



Vista previa activada.

Vista previa (6/6/6, 6:66)


Fondos de pantalla

. . .

Recomendamos


. . .

Descargas

  • ApagaPC
    apagapc241.exe  (4339)
  • LimpiaDocus
    LimpiaDocus001.exe  (3627)
  • RCM
    rcm001.zip  (3062)
  • Popmail
    popmail-0.4-psmn.tar.gz  (3132)
  • Manual de Delphi en PDF
    delphi_pdf.zip  (3764)
  • Evangelio del Perl
    Evangelio_del_perl.pdf  (3786)
  • Excel Simpsons
    Excel Simpsons  (3789)
  • . . .

    Proyectos Online

  • Saiyine Store
  • Kunowalls!!!
  • Fondos de pantalla
  • Picaday: imagenes sexys o chocantes.
  • Scarlett: fotos de Scarlett Johansson
  • WhatsmyIP: obtener tu IP pública
  • Uma Thurman: galeria de Uma Thurman
  • FunPics: imagenes graciosas
  • . . .

    Blogs

  • Por lo que más querais, no entreis a estos: Tapanez, Yhandros, Onez.

  • Otros en español: El Mundo Today, La libreta de Van Gaal, Chavalina, Kirai, Mundo Geek, Microsiervos.

  • Mis lecturas en guiri: Michael Yon, Coding Horror, YCombinator news, MySQL Performance, Slashdot.

    . . .
  • Utilidades

  •  Coral  (1583), cacheando webs
  •  Spam.la  (1899), correo de usar y tirar
  •  Mailinator  (1802), correo de usar y tirar
  •  Bug me not  (1580), absurdos registros di NO
  •  Trashmail  (1629), correo de usar y tirar

    . . .

  • Página web ©2001-2011 Saiyine descargada en s, con 5908084 visitas en total, hoy (de un total de 0 previstas).

    . . .