FTP | CCD | Buscar | Trucos | Trabajo | Foros |
|
Registrarse | FAQ | Miembros | Calendario | Guía de estilo | Temas de Hoy |
|
Herramientas | Buscar en Tema | Desplegado |
|
#1
|
||||
|
||||
Unas cuantas cosas de archivos y hexadecimal.
Estoy haciendo un editor de ficheros de un juego bastante antiguo...PCFutbol 4.0, supongo que casi todos sabeis cual es.
Bueno, la cosa es que esta casi terminado pero tengo problemas al leer y escribir directamente codigo hexadecimal sobre un archivo. Es decir, los archivos que leo y que escribo tienen codigo hexadecimal, pero estan en modo texto. Entonces para leerlos lo que hago es leer de un archivo un caracter y guardarlo en una variable (int), con lo que ya tengo su codigo hexadecimal asociado. Espero explicarme bien. Por ejemplo: Modo texto del archivo: Copyright (c)1995 Dinamic Multimedia.... Codigo hexadecimal asociado: 436F7079726967687420286329313939352044696E616D6963204D756C74696D65646961 Bueno la cosa es que si hago eso...no me lee todo el archivo, encuentra algun caracter, que lo identifica como fin de archivo, con lo que termina antes de tiempo...¿?¿?¿?...alguna idea de como arreglar eso? Despues, a la hora de escribir, al pasar de hexadecimal a cadena y pasarla al archivo...me sucede que al escribir este par hexadecimal "0A"...que corresponde al caracter '\n', o en formato entero 10...en vez de ponerme 1 caracter (como seria lo logico), me pone 2...es decir...escribe en el archivo..."0D0A"...con lo que me tiene loco!! Y ya por ultimo, pregunta tonta pero bueno...las imagenes del juego estan almacenadas en archivos con extension dfg...parece ser que es algun tipo de bmp, pero modificado...alguien sabria como poder editarlo?? Gracias por todo Un saludo Antonio |
#2
|
||||
|
||||
Bueno en cuanto al retorno de carro es habitual que vaya acompañado por una alimentación de línea por eso siempre van juntos los dos códigos
0A ----- Line Feed (Alimentación de línea) 0D ----- Carriage Return (Retorno de carro() De hecho la tecla enter produce esos códigos precisamente. Puedes probarlo: Esto es una prueba <Enter> Guardálo con el nombre que desees por ejemplo prueba: vete al DOS Debug prueba D <enter> Y ahora veras en hexadecimal todo lo escrito y al final 0AOD Para abandonar deBug pulsa Q y luego Enter En cuanto al otro problema porque no lees el archivo entero y no caracter a caracter lo guardas en una variable o donde creas oportuno y luego vas tomando de 2 en 2 los códigos y los pasas a decimal o a lo que corresponda. Un Saludo.
__________________
Guía de Estilo de los Foros Cita:
Última edición por marcoszorrilla fecha: 02-10-2005 a las 12:54:24. |
#3
|
||||
|
||||
Y como cargo un archivo entero en una cadena???
pq yo lo que hago es abrir el archivo (fopen), ir copiando con (fget o fgets), y luego cerrar el archivo (fclose). Gracias Un saludo Antonio |
#4
|
||||
|
||||
Hola,
Cita:
Código:
void __fastcall TForm1::Button1Click(TObject *Sender) { AnsiString archivo = "C:\\archivo.txt"; TStringList *temporal = new TStringList(); try { temporal->LoadFromFile(archivo); ShowMessage(temporal->Text); } __finally { temporal->Free(); } } Código:
void __fastcall TForm1::Button2Click(TObject *Sender) { AnsiString archivo = "C:\\archivo.txt"; TFileStream *fs = new TFileStream(archivo, fmOpenRead); TStringStream *ss = new TStringStream(""); try { ss->CopyFrom(fs, 0); ShowMessage(ss->DataString); } __finally { fs->Free(); ss->Free(); } } |
#5
|
||||
|
||||
Aunque no entiendo muy bien lo que te pasa , para no tener
problemas con los retorno de carro ( 0D0A ) maneja el fichero en modo binario no en modo texto. |
#6
|
||||
|
||||
Pues va a ser que no....
...vamos a ver he probado lo de cargar el archivo de una vez con el Tstringlist, pero nada... el archivo es este: archivo Lo he puesto con extension .doc para poder subirlo. Si lo habris con un editor hexadecimal, podreis verlo perfectamente. Yo lo que quiero es obtener en una cadena todo el codigo hexadecimal. Porque hasta ahora para poder trabajar con el, lo que tengo que hacer es abrir el archivo con un editor hexadecimal, seleccionar todo el codigo y copiarlo a un archivo de texto. La version hexadecimal de ese archivo es: archivohex Asi que si alguien pudiera decirme como leer directamente el archivo y obtener ese codigo hexadecimal en una cadena y luego volver a pasarlo a otro archivo.... Muchas Gracias Un saludo Antonio |
|
|
|