Club Delphi  
    FTP   CCD     Buscar   Trucos   Trabajo   Foros

Retroceder   Foros Club Delphi > Otros entornos y lenguajes > Lazarus, FreePascal, Kylix, etc.
Registrarse FAQ Miembros Calendario Guía de estilo Temas de Hoy

Respuesta
 
Herramientas Buscar en Tema Desplegado
  #1  
Antiguo 25-05-2010
Firewind Firewind is offline
Miembro
 
Registrado: ene 2005
Posts: 12
Poder: 0
Firewind Va por buen camino
Memo + LoadFromFile = no coje acentos, ñ, etc

Hola, he creado un post esta mañana en el apartado de firebird, y la verdad no es el correcto, asi que pongo un enlace, por si me podeis ayudar:
-Nota, copio el texto porque no puedo poner enlaces

Tengo el siguiente problema: para realizar el traslado de la información de un programa de terceros, al que estoy desarrollando, leo los datos de un fichero .dat formateado. El problema es que lo leo con Memo1.Lines.LoadFromFile() y se corrompen los acentos, ñ, y demas. (si veo el fichero con el notepad, aparecen correctamente las ñ, acentos y demas)
La base de datos en firebird esta con UTF8, pero he detectado que el problema es que al cojer el fichero con LoadFromFile, este ya tiene los caracteres 'raros' que se insertan en la base de datos.
Estoy usando Lazarus.
Os agradeceria vuestra ayuda.
Un saludo.
Responder Con Cita
  #2  
Antiguo 25-05-2010
Firewind Firewind is offline
Miembro
 
Registrado: ene 2005
Posts: 12
Poder: 0
Firewind Va por buen camino
Hola.
En ubuntu, he puesto en consola : $file mifichero.dat y me responde :
'ISO-8859 text, with very long lines, with CRLF line terminators'
Bien, con esa info : Como puedo hacer para que el LoadFromFile me respete los caracteres con los acentos?
Este programa lo estoy realizando con lazarus en windows, y se ejecutara solo en windows.
Un saludo.
Responder Con Cita
  #3  
Antiguo 25-05-2010
Avatar de Casimiro Notevi
Casimiro Notevi Casimiro Notevi is offline
Moderador
 
Registrado: sep 2004
Ubicación: En algún lugar.
Posts: 32.040
Poder: 10
Casimiro Notevi Tiene un aura espectacularCasimiro Notevi Tiene un aura espectacular
Si el texto está creado con iso8859, tendrás que abrirlo como tal, ya que si lo abres con utf8 ocurre lo que está pasando. Si quieres convertirlo a utf8 no sé si existe alguna utiildad, supongo que tendrás que reemplazar los caracteres acentuados y eñes en el texto que importas.
Responder Con Cita
  #4  
Antiguo 25-05-2010
Firewind Firewind is offline
Miembro
 
Registrado: ene 2005
Posts: 12
Poder: 0
Firewind Va por buen camino
Hola.

Ya solucione el problema, lo que tuve que hacer es convertir a UTF8 las lineas leidas directamente del fichero y luego añadirlas al memo.

Con esto, ya me insertaba correctamente el contenido en la base de datos.

Aqui dejo la funcion por si le sirve a aguien.
Código:
function CargaPreguntas(const Fichero: TFileName; Memo: TMemo) : string;
 var
   f: text;
   linea_actual: string;
begin
   assign( f, Fichero );
   reset( f );
   while not eof( f ) do
     begin
     readln( f, linea_actual );
     Memo.Lines.Add( UTF8Encode(linea_actual) );
     end;
   close( f );
end;
Un saludo.
Responder Con Cita
  #5  
Antiguo 26-05-2010
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
Cita:
Empezado por Casimiro Notevi Ver Mensaje
(...) Si quieres convertirlo a utf8 no sé si existe alguna utiildad, supongo que tendrás que reemplazar los caracteres acentuados y eñes en el texto que importas.
Existe el programa iconv de GNU (parte de la biblioteca libiconv). Viene con Linux y seguro que hay una versión para Windows. En el peor de los casos se puede bajar el código fuente y compilarlo. Todo programador debería tener este programa disponible.
__________________
Proyectos actuales --> Allegro 5 Pascal ¡y Delphi!|MinGRo Game Engine
Responder Con Cita
  #6  
Antiguo 26-05-2010
Avatar de Casimiro Notevi
Casimiro Notevi Casimiro Notevi is offline
Moderador
 
Registrado: sep 2004
Ubicación: En algún lugar.
Posts: 32.040
Poder: 10
Casimiro Notevi Tiene un aura espectacularCasimiro Notevi Tiene un aura espectacular
Resulta que lo tengo instalado y no lo sabía:

Cita:
ICONV(1) Debian GNU/Linux ICONV(1)

NAME
iconv - Convert encoding of given files from one encoding to another

SYNOPSIS
iconv -f encoding [-t encoding] [inputfile]...

DESCRIPTION
The iconv program converts the encoding of characters in inputfile, or
from the standard input if no filename is specified, from one coded
character set to another. The result is written to standard output
unless otherwise specified by the --output option.
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
TJPEGImage.LoadFromFile: Error 52 Jose_Pérez Gráficos 4 12-02-2010 10:46:51
Problema con LoadFromFile sergiosantiago1 Gráficos 5 11-04-2008 17:02:47
problemas con el LoadFromFile sac OOP 14 19-07-2007 16:55:34
LoadFromFile con una progressbar Jesús Pena Varios 5 18-04-2007 20:19:24


La franja horaria es GMT +2. Ahora son las 19:17:16.


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