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 26-02-2015
euMesmo euMesmo is offline
Registrado
 
Registrado: may 2008
Posts: 7
Poder: 0
euMesmo Va por buen camino
Bien, creo que encontré el problema.
El código funciona si quito "UTF8ToAnsi"

Gracias a todos.
Responder Con Cita
  #2  
Antiguo 27-02-2015
Avatar de ecfisa
ecfisa ecfisa is offline
Moderador
 
Registrado: dic 2005
Ubicación: Tres Arroyos, Argentina
Posts: 10.508
Poder: 36
ecfisa is a splendid one to beholdecfisa is a splendid one to beholdecfisa is a splendid one to beholdecfisa is a splendid one to beholdecfisa is a splendid one to beholdecfisa is a splendid one to beholdecfisa is a splendid one to behold
Hola euMesmo.
Cita:
Empezado por euMesmo Ver Mensaje
Bien, creo que encontré el problema.
El código funciona si quito "UTF8ToAnsi"

Gracias a todos.
¿ Es decir que el código del mensaje #5 te funciona quitando la función UTF8ToAnsi ?, entonces quedo mas perplejo que antes...

De ese modo obtengo este mensaje de error:



Sin embargo, de este modo sí funciona correctamente:
Código Delphi [-]
const
  FNAME = 'Márgen ñato.txt';

procedure TForm1.Button1Click(Sender: TObject);
var
   fichero: TStringList;
begin
  fichero:= TStringList.Create;
  try
    fichero.LoadFromFile( ExtractFilePath(Application.ExeName) + UTF8ToAnsi(FNAME) );
    Memo1.Lines.Assign( fichero ); // Acción de ejemplo
  finally
    fichero.Free;
  end;
end;
Lo que me induce a pensar que la función ExtractFilePath realiza la conversión necesaria.

Nombres que usé para la prueba:
  • Ruta: c:\tmp\Cápita moño
  • Archivo: Márgen ñato.txt

Saludos
__________________
Daniel Didriksen

Guía de estilo - Uso de las etiquetas - La otra guía de estilo ....
Responder Con Cita
  #3  
Antiguo 28-02-2015
euMesmo euMesmo is offline
Registrado
 
Registrado: may 2008
Posts: 7
Poder: 0
euMesmo Va por buen camino
Veamos, el código #5 me funciona para el fichero "app.cfg" (sin acentos ni eñes en su nombre). Como apuntas, ExtractFilePath hace su trabajo, de hecho, en el mensaje que aparece, se ven claramente los acentos y no "?" o "Ã" como tu caso en el nombre del fichero, pero la cosa no acaba ahí y ya no sé que pensar.

Un programa exclusivamente con ese código no devuelve ningún error independientemente de si la ruta tiene o no acentos. Bien.

Ahora, en mi programa, el módulo principal, en el evento "formcreate" empieza exactamente lo mismo (incluido nombres y declaraciones de variables). Pues bien, en mi programa aparece el error de open file en "app.cfg" cuando cambio el nombre de la carpeta (Aplicacion) por el mismo con acento (Aplicación), evidentemente cierro el programa antes de cambiar el nombre y lo vuelvo a ejecutar. He comprobado que la aplicación no abriese "en otro lugar" este archivo y nada.

Como te imaginarás he dudado hasta de mi sombra, llevo casi 20 años programando en pascal (desde el Delphi 1) y creía haber visto "de todo".

En fin si a alguien se le ocurre algo que no dude en comentarlo.

Gracias por tu tiempo ecfisa
Responder Con Cita
  #4  
Antiguo 01-03-2015
Avatar de nlsgarcia
[nlsgarcia] nlsgarcia is offline
Miembro Premium
 
Registrado: feb 2007
Ubicación: Caracas, Venezuela
Posts: 2.206
Poder: 21
nlsgarcia Tiene un aura espectacularnlsgarcia Tiene un aura espectacular
euMesmo,

Cita:
Empezado por euMesmo
...Cargo un archivo de texto, que se encuentra en la misma ruta que el ejecutable, a un stringlist mediante loadfromfile...si el ejecutable está en una carpeta (o ruta) cuyo nombre no tiene eñes ni acentos funciona sin más problema. En cuanto cambio el nombre de carpeta por otro que tenga acentos deja de funcionar...


Revisa este código:
Código Delphi [-]
unit Unit1;

{$mode objfpc}{$H+}

interface

uses
  Classes, SysUtils, FileUtil, Forms, Controls, Graphics, Dialogs, StdCtrls;

type

  { TForm1 }

  TForm1 = class(TForm)
    Memo1: TMemo;
    ToggleBox1: TToggleBox;
    procedure FormClose(Sender: TObject; var CloseAction: TCloseAction);
    procedure ToggleBox1Change(Sender: TObject);
  private
    { private declarations }
  public
    { public declarations }
  end;

var
  Form1: TForm1;
  FileStrList : TStringList;

implementation

{$R *.lfm}

{ TForm1 }

procedure TForm1.ToggleBox1Change(Sender: TObject);
var
   openDialog : TOpenDialog;
   AuxStr : String;
   MsgUser : String;

begin

  openDialog := TOpenDialog.Create(self);
  openDialog.InitialDir := GetCurrentDir;
  openDialog.Options := [ofFileMustExist];
  openDialog.Filter := 'Text Files|*.txt';

  if openDialog.Execute then
  begin
     FileStrList := TStringList.Create;
     AuxStr := openDialog.FileName;
     FileStrList.LoadFromFile(UTF8ToAnsi(AuxStr));
     Memo1.Lines.Text := AnsiToUtf8(FileStrList.Text);
  end
  else
  begin
     MsgUser := 'No se Selecciono Ningún Archivo de Texto para Visualizar';
     MessageDlg(MsgUser,mtinformation,[mbok],0);
  end;

  openDialog.Free;

end;

procedure TForm1.FormClose(Sender: TObject; var CloseAction: TCloseAction);
begin
  FileStrList.Free;
  CloseAction := cafree;
end;

end.
El código anterior en Lazarus Versión #:1.2.6 FPC Version 2.6.4 bajo Windows 7 Professional x32, permite visualizar archivos de texto que contengan caracteres acentuados o con ñ tanto en su contenido como en el nombre del directorio en donde residen, como se muestra en las siguientes imágenes:





Espero sea útil

Nelson.
Responder Con Cita
  #5  
Antiguo 04-03-2015
euMesmo euMesmo is offline
Registrado
 
Registrado: may 2008
Posts: 7
Poder: 0
euMesmo Va por buen camino
Hola nlsgarcia, disculpa por no contestar antes.

Veamos, el problema no es el contenido del archivo a abrir si tiene o no palabras con acentos. El problema está en la ruta en la que se ejecuta el programa, si en esa ruta ninguna de las carpetas tiene acentos, eñes, espacios en blanco, funciona, abre el archivo y lee correctamente el archivo, si cambio el nombre de cualquiera de las carpetas de la ruta y no pongo acentos, sigue funcionando, en cuanto cambio el nombre de una carpeta por uno con acento aparece el error de "open file".

Dicho de otra forma, si se copia la carpeta que contiene el programa y todos los archivos necesarios en el escritorio de un usuario que se llame "José" ya aparece el error dado que "José" está en la ruta de acceso al archivo.

Gracias por tu atención.
Responder Con Cita
  #6  
Antiguo 04-03-2015
Avatar de nlsgarcia
[nlsgarcia] nlsgarcia is offline
Miembro Premium
 
Registrado: feb 2007
Ubicación: Caracas, Venezuela
Posts: 2.206
Poder: 21
nlsgarcia Tiene un aura espectacularnlsgarcia Tiene un aura espectacular
euMesmo,

Cita:
Empezado por euMesmo
...el problema no es el contenido del archivo a abrir si tiene o no palabras con acentos...El problema está en la ruta en la que se ejecuta el programa...en cuanto cambio el nombre de una carpeta por uno con acento aparece el error de "open file"...


Revisa el código y las imágenes del Msg #9, este permite visualizar archivos de texto que contengan caracteres acentuados o con ñ tanto en su contenido como en el nombre del archivo y directorio/ruta en donde residen en cualquier combinación.

Espero sea útil

Nelson.

Última edición por nlsgarcia fecha: 04-03-2015 a las 00:44:07.
Responder Con Cita
  #7  
Antiguo 06-03-2015
euMesmo euMesmo is offline
Registrado
 
Registrado: may 2008
Posts: 7
Poder: 0
euMesmo Va por buen camino
Gracias Nelson.

Pero el código que se plantea carga el archivo mediante un "OpenDialog", yo lo hago directamente llamando al archivo ya que sé su ubicación mediante un "loadfromfile(ruta)".
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
Memo + LoadFromFile = no coje acentos, ñ, etc Firewind Lazarus, FreePascal, Kylix, etc. 5 26-05-2010 10:46:38
TJpegImage.LoadFromFile repite parte de mi ruta!! Garry Gráficos 15 02-09-2008 10:41:04
TStringList.LoadFromFile y líneas con caracteres #0 Lord Delfos Varios 4 11-04-2008 14:48:52
Acentos y eñes llonigualker Varios 3 20-11-2004 14:25:35
Ordernar a acentos y eñes (tablas dbase) Jose_Pérez SQL 2 17-11-2003 15:49:20


La franja horaria es GMT +2. Ahora son las 21:03:07.


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