You are on page 1of 4

FTP

CCD

Archivos INI con codificacin Unicode, UTF8, etc.


FA Q

Buscar

Trucos

Trabajo

Foros

Nombre de Usuario Nombre de Usuario


Recordarme?

Foros Club Delphi > Otros temas > Trucos

Registrarse

Enlaces

Miembros

C ontrasea
Calendario

Gua de estilo

Iniciar Sesin
Temas de Hoy

Herramientas

Desplegado

#1

10-10-2012

Registrado: dic 2004


Ubicacin: Alcobendas, Madrid, Espaa
Posts: 11.873

dec
Moderador

Archivos INI con codificacin Unicode, UTF8, etc.

Hola,
Slo quera aportar algo que quiz sea de conocimiento comn. Se trata de trabajar con archivos INI en una codificacin de caracteres
diferente a la predeterminada, esto es, "ANSI". La clase "TIniFile" (Implementada en la unidad "IniFiles") no soporta (a fecha de hoy) otra
codificacin diferente a la referida, empero, en la misma unidad que dicha clase existe otra de nombre "TMemIniFile", que nos permite
especificar, desde el mismo constructor, la codificacin que queremos utilizar al trabajar con el archivo INI.
Supn que ests usando un archivo INI para guardar "bsquedas" que realiza el usuario de tu programa. Si tu programa usa una versin
Delphi con soporte para Unicode (a partir de Delphi 2009) el usuario podr utilizar caracteres Unicode para realizar sus bsquedas, y, el
archivo INI deber guardar dichos caracteres, de manera que no se "pierdan" al tener que reducirse a la codificacin "ANSI". Pues bien, este

open in browser PRO version

Are you a developer? Try out the HTML to PDF API

pdfcrowd.com

es un ejemplo en el que la clase "TMemIniFile" nos vendr de perillas. Por lo dems, esta clase "funciona" exactamente igual a "TIniFile".
Si acaso aadir un pequeo detalle ms que, al menos en Delphi XE2, ocurre. La clase "TIniFile" "guarda" el archivo INI cuando se libera el
objeto correspondiente, sin embargo, la clase "TMemIniFile" no lo hace as. Pero, para esto existe un mtodo (en ambas clases adems) de
nombre "UpdateFile", que, podrs utilizar para que la clase "TMemIniFile" actualize el archivo INI con el que est asociada. Tambin me
gustara aadir que debers usar (tal vez no estrictamente, pero, s por lo general, me atrevera a decir) la misma codificacin de
caracteres, tanto cuando abras el archivo INI para leerlo, como cuando escribas en el mismo.
A continuacin un sencillo ejemplo de uso de la clase "TMemIniFile":
Cdigo Delphi [-]
class procedure TInterfaceConfig.LoadConfig();
begin
with TMemIniFile.Create( self.GetInterfaceIniFilePath(), TEncoding.Unicode ) do
try
Language := ReadString( I18N_SECTION, LANGUAGE_VALUE, DEFAULT_LANGUAGE );
ActiveTheme := ReadString( THEME_SECTION, NAME_VALUE, DEFAULT_THEME_NAME );
EditorTab := ReadInteger( OPTIONSFORM_SECTION, EDITOR_TAB_VALUE, DEFAULT_EDITOR_TAB );
OptionsTab := ReadInteger( OPTIONSFORM_SECTION, OPTIONS_TAB_VALUE, DEFAULT_OPTIONS_TAB );
MainFormTop := ReadInteger( MAINFORM_SECTION, TOP_VALUE, DEFAULT_MAINFORM_TOP );
MainFormLeft := ReadInteger( MAINFORM_SECTION, LEFT_VALUE, DEFAULT_MAINFORM_LEFT );
MainFormWidth := ReadInteger( MAINFORM_SECTION, WIDTH_VALUE, DEFAULT_MAINFORM_WIDTH );
MainFormHeight := ReadInteger( MAINFORM_SECTION, HEIGHT_VALUE, DEFAULT_MAINFORM_HEIGHT );
MainFormWindowState := ReadInteger( MAINFORM_SECTION, WINDOW_STATE_VALUE, DEFAULT_MAINFORM_WINDOW_STATE );
finally
Free();
end;
end;
class procedure TInterfaceConfig.SaveConfig();
begin
with TMemIniFile.Create( self.GetInterfaceIniFilePath(), TEncoding.Unicode ) do
try
WriteString( I18N_SECTION, LANGUAGE_VALUE, Language );
WriteInteger( MAINFORM_SECTION, TOP_VALUE, MainFormTop );
WriteInteger( MAINFORM_SECTION, LEFT_VALUE, MainFormLeft );
WriteInteger( MAINFORM_SECTION, WIDTH_VALUE, MainFormWidth );
WriteInteger( MAINFORM_SECTION, HEIGHT_VALUE, MainFormHeight );
WriteInteger( MAINFORM_SECTION, WINDOW_STATE_VALUE, MainFormWindowState );
WriteString( THEME_SECTION, NAME_VALUE, TStyleManager.ActiveStyle.Name );

open in browser PRO version

Are you a developer? Try out the HTML to PDF API

pdfcrowd.com

WriteInteger( OPTIONSFORM_SECTION, EDITOR_TAB_VALUE, EditorTab );


WriteInteger( OPTIONSFORM_SECTION, OPTIONS_TAB_VALUE, OptionsTab );
UpdateFile();
finally
Free();
end;
end;

Espero que este truco pueda resultar til a alguien en algn momento.

Tema A nterior | Prximo Tema

Normas de Publicacin
no
no
no
no

Puedes
Puedes
Puedes
Puedes

crear nuevos temas


responder a temas
adjuntar archivos
editar tus mensajes

El cdigo vB est habilitado


Las caritas estn habilitado
C digo [IMG] est habilitado
C digo HTML est deshabilitado

Saltar a Foro
Trucos

Ir

Temas Similares
Tema

Autor

Foro

Respuestas

ltimo mensaje

A NSI, UTF8, unicode en D7

elcigarra

Varios

10-05-2013 10:50:43

Firebird 2.5 y UTF8

C handra_

Firebird e Interbase

14

05-11-2010 20:27:44

UTF8 La maldicion

Softweb

Varios

25-03-2010 13:45:39

matabyte

Windows

01-05-2008 01:40:13

A brir archivos con nombres de archivos de otra

open in browser PRO version

Are you a developer? Try out the HTML to PDF API

pdfcrowd.com

A brir archivos con nombres de archivos de otra


codificacin.

matabyte

Windows

01-05-2008 01:40:13

Codificar texto en UTF8

xio

Internet

29-10-2007 18:10:19

La franja horaria es GMT +2. Ahora son las 05:38:18.

-- Espaol 3.6.7

Contactar con Nosotros - Club Delphi - A rchivo - Top

Powered by vBulletin Version 3.6.8


C opyright 2000 - 2015, Jelsoft Enterprises Ltd.
Traduccin al castellano por el equipo de moderadores del C lub Delphi
Inicio | Contacto | Foros | Noticias | Trabajo
Copyright 1996-2007 Club Delphi

open in browser PRO version

Are you a developer? Try out the HTML to PDF API

pdfcrowd.com

You might also like