Foros Club Delphi

Foros Club Delphi (https://www.clubdelphi.com/foros/index.php)
-   Varios (https://www.clubdelphi.com/foros/forumdisplay.php?f=11)
-   -   Leer ficheros Mac en Delphi (https://www.clubdelphi.com/foros/showthread.php?t=34835)

thagson 23-08-2006 12:25:39

Leer ficheros Mac en Delphi
 
Hola amigos,


Tengo un problema, necesito leer ficheros txt en formato mac desde una aplicación windows, mi sorpesa es que delphi solo permite los fines de linea de linux/unix y windows (#10 y #13#10 respectivamente), por lo que he averiguado mac utiliza el #13 y ya esta.
Al tener los ficheros en formato mac, me lee todo el fichero como una sola linea, y no es correcto porque tiene varias lineas.


Haber si alguien me puede ayudar.


Un saludo

thagson 23-08-2006 12:41:19

Resuelto
 
Solo bastava con escribir en el foro como para que de casualidad me saliese la respuesta.
Pero por si alguien lo necesita dejo aqui el codigo.

Código Delphi [-]
procedure MyReadLn(var AFile: TextFile; var S: string);
var
  tmpStr: string;
  MyChar: Char;
begin
  tmpStr := '';
  while not EOF(AFile) do
  begin
    read(AFile, MyChar);
    case Ord(MyChar) of
      13:
        begin
          read(AFile, MyChar);
          Break;
        end;
      10:
          Break;

    else
      tmpStr := tmpStr + MyChar;
    end;
  end;
  S := tmpStr;
end;

Ñuño Martínez 23-08-2006 13:14:27

Gracias por la información: seguro que nos es útil a más de uno.

thagson 23-08-2006 13:20:40

Otra cosita
 
No se merecen Ñuño.

Pero ahora tengo otro problemilla, el fichero ya lo leo linea por linea, lo que ocurre es que como proviene de un mac la codificación también es mac, con lo que los acentos y eñes no se muestran bien.


¿Alguien me puede ayudar? Gracias.

dec 23-08-2006 13:27:05

Hola,

¿Codificación Mac? Nunca oí hablar de algo así, que no quiere decir que no exista, claro está. A ver si el archivo va a estar codificado en "UTF-8", por ejemplo, y el componente con el que tratas de visualizarlo no está preparado para este tipo de codificación...

Aunque, si dices que lo lees... lo mismo ni siquiera lo visualizas en ningún componente ni falta que te hace. En ese caso primero averiguaría en qué codificación está el archivo (hay programas para eso, creo, pero, puedes probar con el mismo Bloc de Notas, que reconoce varias codificaciones de caracteres).

Luego, dependiendo de la codificación del archivo... hablamos... o habláis y yo escucho... si os parece bien. :D

thagson 23-08-2006 13:50:20

Haber, creo que he mezclado conceptos, y por ello pido disculpas.

El fichero proviene de un mac, de la codifiación no se cual es, se habre tanto en ANSI, Unicode o UTF-8.

He probado de abrirlo con el Word, me reconoce que no tiene una codificación "windows" así que me da la posibilidad de cambiarla, si la pongo en "Occidental (Mac)" el fichero se lee perfectamente con acentos y caracteres no anglosajones.

He probado de usar el oemtoansi, ansitooem, utf8tounicode, unicodetoutf8, utf8toansi y el ansitoutf8 en un acto desesperado, pero ninguno me devuelve bien los caracteres no anglosajones.

El texto lo estoy mostrando con un ShowMessage simple.
Un ejemplo podria ser que sale una ç por en vez de á.

Un saludo

dec 23-08-2006 14:12:08

Hola,

Cita:

(...) El fichero proviene de un mac, de la codifiación no se cual es, se habre tanto en ANSI, Unicode o UTF-8. (...)
Pero cuando lo abres en el Bloc de notas de Windows, por ejemplo, este tendrá que indicarte en la codificación en la que lo ha abierto (que será la que él haya podido reconocer en el fichero), por tanto no puede ser ANSI, Unicode o UTF-8 (aunque sé por dónde vas, creo), sino que tiene que ser alguna de esas u otra...

Sería acertar a la lotería, pero, si para leer el archivo vas guardando su contenido en variables de tipo String, prueba a hacerlo con el tipo WideString, que creo que es el propio en Delphi para tratar con codificaciones de caracteres distinas de ANSI.

Hay escrito por ahí en Internet algunos artículos que tratan sobre cómo bregar con la codificación de caracteres <> ANSI en Delphi. ;)


La franja horaria es GMT +2. Ahora son las 12:23:55.

Powered by vBulletin® Version 3.6.8
Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
Traducción al castellano por el equipo de moderadores del Club Delphi