Club Delphi  
    FTP   CCD     Buscar   Trucos   Trabajo   Foros

Retroceder   Foros Club Delphi > Principal > Varios
Registrarse FAQ Miembros Calendario Guía de estilo Temas de Hoy

Grupo de Teaming del ClubDelphi

Respuesta
 
Herramientas Buscar en Tema Desplegado
  #1  
Antiguo 23-08-2006
thagson thagson is offline
Registrado
 
Registrado: ago 2006
Posts: 4
Poder: 0
thagson Va por buen camino
Unhappy 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
Responder Con Cita
  #2  
Antiguo 23-08-2006
thagson thagson is offline
Registrado
 
Registrado: ago 2006
Posts: 4
Poder: 0
thagson Va por buen camino
Talking 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;
Responder Con Cita
  #3  
Antiguo 23-08-2006
Avatar de Ñuño Martínez
Ñuño Martínez Ñuño Martínez is offline
Moderador
 
Registrado: jul 2006
Ubicación: Ciudad Catedral, Españistán
Posts: 6.000
Poder: 25
Ñuño Martínez Tiene un aura espectacularÑuño Martínez Tiene un aura espectacular
Gracias por la información: seguro que nos es útil a más de uno.
Responder Con Cita
  #4  
Antiguo 23-08-2006
thagson thagson is offline
Registrado
 
Registrado: ago 2006
Posts: 4
Poder: 0
thagson Va por buen camino
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.
Responder Con Cita
  #5  
Antiguo 23-08-2006
Avatar de dec
dec dec is offline
Moderador
 
Registrado: dic 2004
Ubicación: Alcobendas, Madrid, España
Posts: 13.107
Poder: 34
dec Tiene un aura espectaculardec Tiene un aura espectacular
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.
__________________
David Esperalta
www.decsoftutils.com
Responder Con Cita
  #6  
Antiguo 23-08-2006
thagson thagson is offline
Registrado
 
Registrado: ago 2006
Posts: 4
Poder: 0
thagson Va por buen camino
Unhappy

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
Responder Con Cita
  #7  
Antiguo 23-08-2006
Avatar de dec
dec dec is offline
Moderador
 
Registrado: dic 2004
Ubicación: Alcobendas, Madrid, España
Posts: 13.107
Poder: 34
dec Tiene un aura espectaculardec Tiene un aura espectacular
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.
__________________
David Esperalta
www.decsoftutils.com
Responder Con Cita
Respuesta



Normas de Publicación
no Puedes crear nuevos temas
no Puedes responder a temas
no Puedes adjuntar archivos
no Puedes editar tus mensajes

El código vB está habilitado
Las caritas están habilitado
Código [IMG] está habilitado
Código HTML está deshabilitado
Saltar a Foro

Temas Similares
Tema Autor Foro Respuestas Último mensaje
Abrir ficheros en delphi Dalba API de Windows 3 28-06-2006 11:26:31
Leer enteros de 32-bits en ficheros binarios elcaracas C++ Builder 2 08-04-2005 21:46:54
Crear ficheros Rave desde Delphi murrai Impresión 0 13-03-2005 11:06:51
¿ Delphi 7 no es compatible leyendo ficheros con Delphi 30 ? Nebli Varios 10 25-09-2004 11:03:25
Renombrar, eliminar ficheros con Delphi???? mguixot OOP 2 29-12-2003 14:41:36


La franja horaria es GMT +2. Ahora son las 00:31:09.


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
Copyright 1996-2007 Club Delphi