PDA

Ver la Versión Completa : Problema con archivos de texto.


morodo
28-12-2006, 06:06:05
Hola buenas noches a todos!!
Soy nuevo en este foro y me he registrado para consultaros por que ya me e servido de muchas respuestas aqui dadas para otros casos pero para ésta no encuentro solución.
Resulta que tengo serios problemas con el ENTER, la Ñ y nuestras coleguitas á,é,í,ó,ú al manipular un file of text.
El programa es un compresor de texto que lo que intenta es analizar un fichero de texto ordenando las distintas letras por la frecuencia en que estas aparezcan y creando un arbol binario con las distintas letras, adjudicandole un codigo binario de menor numero de bits a las letras con mayor frecuencia para despues guardar en un archivo "comprimido" la ristra de bits que es el texto en si y la tabla con los distintos codigos binarios de cada letra para despues poder "descomprimirlo" (Es un algoritmo que alguno conocereis por que es de estos que tiene nombre y todo :p )
Ahora bien, he conseguido que el programa me comprima un texto larguisimo siempre y cuando no haya ningun retorno de carro pues éste con readln(f,c) hay veces que se detiene y no sigue con los caracteres que le siguen, veces que lee las filas impares, y veces que lo cuenta como dos caracteres al igual que "ñáéíóú" que lo toma como un 195(a veces 196) seguido de otro valor ASCII.Es decir, como si uno de esos caracteres fuera la marca de ke es un caracter especial y el siguiente el ke le diferencia de los demas.

Estos problemas me traen por la calle de la amargura por que parece algo muy simple pero que llego meses con el y ni el profesor de la universidad me lo ha sabido dejar bien claro dejandome con el "tu prueba" tirado como una colilla :confused:

Si alguien pudiera decirme cual es la manera correcta de ir leyendo uno a uno todos los caracteres de un fichero de texto hasta llegar al eof(o utilizando otro while con eoln :eek: ) y que no me dieran problemas los caracteres especiales le estaria eternamente agradecido.Algo he leido por ahi de leer el enter como #10+#13 o algo asi pero no saco nada en claro.

Muchas gracias de anticipado fenómenos :)

seoane
28-12-2006, 13:55:42
Como dijo Jack, vamos por partes. Primero el carácter extraño $C3 (195) que te aparece con las vocales acentuadas, es porque el archivo esta usando la codificación UTF-8 y no la ANSI. En la codificación UTF-8 los caracteres pueden estar compuestos por 1,2 o incluso 3 bytes.

Segundo, la función readln lee una cadena hasta encontrar los caracteres #13#10, pero no los lee, simplemente coloca el puntero justo después, para que la siguiente instrucción readln lea la siguiente linea. El problema es cuando en el archivo aparecen caracteres #13 o #10 sueltos, entonces la instrucción readln funciona mal, cosa normal ya que un archivo de esas características no se estaría ajustando al formato que deben de tener los archivos de texto en una plataforma windows.

Por ultimo, yo te recomiendo que si no te quieres romper la cabeza con codificaciones, saltos de linea, etc. lo mejor es que leas el archivo de texto como si fuera un archivo binario. Que por cierto es igual o mas sencillo que leer uno de texto.

morodo
08-01-2007, 20:18:53
Desde hoy ;) ;) estas en mi lista de dioses seoane al lado de fenomenos como kratos y bob marley jajaja
no hay ningun problema a la hora de leer si se lee de forma binaria gracias por favorR!!!!
te invitaria a mil copas fenomeno!!
Viva este foro!!
GRACIAS!!!

mlara
28-04-2011, 22:35:14
Dios, personificación de la fuerza y el poder, cantante reggae y marihuanero, amigo, fenómeno!!!

Jajajaj qué chistoso. Llegué a este hilo por accidente, y no había leido un agradecimiento tal! :D

Casimiro Notevi
29-04-2011, 01:43:39
Pues vaya... no ha vuelto nunca más, así que olvidaría pronto al Dios Seoane :)

morodo
29-04-2011, 02:07:03
No me acordaba de esto madre mía.
Acabo de leer a mi yo de hace 5 años.
Y solo puedo agradecer a foros como este y a su gente por la gran ayuda que brindáis a todos.
Muchas gracias.