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-11-2006
Flecha Flecha is offline
Miembro
 
Registrado: nov 2006
Posts: 59
Poder: 18
Flecha Va por buen camino
Question LoadFromFile y la letra "Ñ"

Tengo un pequeño problema.
Para unos procesos de carga de archivos de texto plano estoy utilizando un TStringList para leer en él el contenido del fichero. Para ello hago uso de su método LoadFromFile.
Pero resulta que la letra "Ñ" me la lee como "Ã`" con los correspondientes problemas que luego eso me origina. No sólo son distintos caracteres sino que son 2 en vez de 1 y me desplaza un espacio el resto de datos de la misma fila.

Para solucionarlo sólo se me ocurre olvidarme del LoadFromFile y cargar sobre el TStringList a base de Add() y de acceder al fichero con una variable TextFile leyéndolo fila a fila. Algo demasiado arcaico para los días en los que estamos, la verdad.

Por favor ¿Alguien tiene una idea mejor?
Responder Con Cita
  #2  
Antiguo 23-11-2006
Flecha Flecha is offline
Miembro
 
Registrado: nov 2006
Posts: 59
Poder: 18
Flecha Va por buen camino
La cosa es peor de lo que creía.
Hacer uso de un TextFile y leerme el fichero de texto línea a línea tampoco me soluciona el problema.

Así que no tengo manera de leer un archivo de texto plano sin que me cambie la "Ñ" por "ô".

Ayuda please...
Responder Con Cita
  #3  
Antiguo 23-11-2006
Avatar de seoane
[seoane] seoane is offline
Miembro Premium
 
Registrado: feb 2004
Ubicación: A Coruña, España
Posts: 3.717
Poder: 24
seoane Va por buen camino
Tu problema es que ese texto no lo guardaste desde un TStringList ¿a que no?, lo guardaste desde un programa que trabaja con la codificación UTF-8. En esta codificación la letra ñ se guarda como 2 bytes ($C3 $91), que se corresponden con "Ñ", por eso el TStringList lo lee así. La solución pasa por convertir el UTF-8 a texto ASCII, o decirle al otro programa, si puedes, que no utilice UTF-8
Responder Con Cita
  #4  
Antiguo 23-11-2006
Flecha Flecha is offline
Miembro
 
Registrado: nov 2006
Posts: 59
Poder: 18
Flecha Va por buen camino
Gracias, pero no me vale porque el archivo no se crea desde ninguno de mis programas. Se crean desde otras empresas con sus propios programas, y que nos lo mandan a nosotros.

He comprobado que el formato en el que me llega el archivo es UTF-8, pero mi problema está en poder leer el contenido del fichero independientemente del formato en el que me llegue.

Hay quien me aconseja utilizar el TRichEdit para leer el archivo. Estoy probando.

¿Alguna opinión al respecto?
Responder Con Cita
  #5  
Antiguo 23-11-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,

Acabo de probar con algo así y parece ir bien:

Código Delphi [-]
var
  t: TStrings;
begin
  t := TStringList.Create;
  try
    // pruebas.txt está codificado con "UTF-8"
    t.LoadFromFile('C:\pruebas.txt');
    ShowMessage(UTF8Decode(t.Strings[0]));
  finally
    t.Free;
  end;
end;

También podría valer utilizando "Utf8ToAnsi" en lugar de "UTF8Decode", pero... se supone aquí que tratamos con un archivo codificado en "UTF-8"... si el mismo no estuviera codificado así nos encontraríamos con problemas también...

Desde luego en Google aparece información sobre lo que nos ocupa. Esta página de Delphi Fundamentals tal vez ayude algo...
__________________
David Esperalta
www.decsoftutils.com

Última edición por dec fecha: 23-11-2006 a las 13:42:42.
Responder Con Cita
  #6  
Antiguo 23-11-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,

Acabo de recordar a los componentes SynEdit. Estos cuentan con una variante preparada para trabajar con archivos UTF-8. Se trata de UnicodeSynEdit. Estos componentes cuentan con un "SynEditMemo" que acaso podría serte de utilidad... Son unos componentes de código abierto y gratuitos, por cierto.
__________________
David Esperalta
www.decsoftutils.com
Responder Con Cita
  #7  
Antiguo 23-11-2006
Avatar de seoane
[seoane] seoane is offline
Miembro Premium
 
Registrado: feb 2004
Ubicación: A Coruña, España
Posts: 3.717
Poder: 24
seoane Va por buen camino
Jajaja, yo como siempre reinventando la rueda.

Llevo como 10 minutos para hacer esto:


EDITO: Leer el código que pongo mas abajo, el que estaba aquí no era correcto

Y viene aquí David y me cuenta que existe la función UTF8Decode, jajajaja

Última edición por seoane fecha: 23-11-2006 a las 15:36:05.
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
Ventana MDI, "Siempre visible" y "Pantalla completa" ixMike API de Windows 7 11-04-2007 18:36:55
¿cuál es mejor: "close" o "application.terminate"? unreal4u Varios 5 05-03-2007 11:01:19
"ChequeaEsto" elegido el futuro "Killer CLubDelphi" mamcx Noticias 51 31-10-2006 20:56:32
porque no me reconoce los caracteres "*" ni "%" cuando filtro mrmago Conexión con bases de datos 10 27-01-2006 04:21:16


La franja horaria es GMT +2. Ahora son las 15:49:06.


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