FTP | CCD | Buscar | Trucos | Trabajo | Foros |
|
Registrarse | FAQ | Miembros | Calendario | Guía de estilo | Temas de Hoy |
|
Herramientas | Buscar en Tema | Desplegado |
#1
|
||||
|
||||
Abrir archivos con nombres de archivos de otra codificación.
Bueno, lo pongo aquí porque creo que afecta a Windows.
Uso Windows XP y Delphi 2007. El caso es que cuando intento abrir un archivo usando un TStream o un TOpenDialog, y el nombre del archivo está en otra codificación de la de Windows (Por ejemplo, un nombre de archivo en Japonés con Windows en Español o a la inversa), Delphi me tira el programa diciendo que el archivo no es válido. Se que aún Dephi no es Unicode completamente (aunque se pueden usar las WideStrings). No se si es problema del propio delphi o de los componentes. He intentado usar el OpenDialog del "TNT Unicode Controls" y funciona correctamente, pero el TFileStream de Delphi tiene la propiedad "FileName" igual a string, con lo que no puede usar el archivo unicode. ¿Sabéis algún sistema para manejar esos archivos con Delphi, a poder ser con un TStream? ¿o hay que esperar a la versión 2008? Gracias ^_^ |
#2
|
||||
|
||||
Analizando una unidad de los propios componentes que citaste, podemos formarnos algúnas ideas a implementar;
1. Ataquemos a la clase TFileStream, la cual sobrecargada tiene un método útil de la clase padre (THandleStream), de creación que permite inicializar por manejador "FHandle" Donde la API CreateFileW es la encargada de archivo en modo UNICODE dado el nombre brindado en este caso por FindFirstFileW. 2. Podríamos hasta realizar nuestra propia clase sobrecargando el método; Utilizándola de igual forma; Hasta podemos idearnos una 3ra forma más sencilla sin conocimientos de POO; Donde la API GetShortPathNameW está obteniendo el antigüo nombre 8.3 accesible por la VCL. Nota; Para obtener el nombre del archivo con la intervencion del usuario, en lugar de usar la API FindFirstFileW, debemos utilizar la API GetOpenFileNameW abstraída de TOpenDialog con su apropiada estructura TOpenFilenameW. Como verás depende netamente de la habilidad del programador, no así de la version del IDE Saludos Última edición por cHackAll fecha: 30-04-2008 a las 18:32:06. Razón: some issues |
#3
|
||||
|
||||
Muchas gracias por la explicación. Como era Delphi el que tenía el objeto del TFileStream no había pensado en crear una subclase para eso! Muy buena idea, me has solucionado mucho ^_^
|
|
|
Temas Similares | ||||
Tema | Autor | Foro | Respuestas | Último mensaje |
abrir archivos cfg | consultasmq | Varios | 2 | 21-02-2008 20:10:02 |
Extensión en nombres de archivos de fuente | Ñuño Martínez | Varios | 6 | 05-07-2007 15:45:56 |
Problemas con los nombres de los archivos | Alcolea | Varios | 4 | 15-02-2007 16:49:05 |
como obtener los nombres de archivos de un directorio | ilichhernandez | Varios | 3 | 14-07-2006 18:49:57 |
Abrir archivos pdf | luxus | OOP | 1 | 23-10-2005 00:37:24 |
|