Para documentação em português do Brasil, acesse PT-BR
For English documentation, access EN-US

PT-BR

O componente DotNetMax.Configuration.Ini.IniManager provê uma forma gerenciada de manipular arquivos .ini, desta forma fornecendo agilidade e precisão na leitura e/ou confecção deste tipo de arquivo.

1-) Dependências

Para usar o componente de arquivos .ini, será necessário que as seguintes dll's sejam incluidas no projeto:
  • DotNetMax.Common.dll
  • DotNetMax.Configuration.Ini.dll

2-) Lendo as Configurações

O processo para abrir um arquivo .ini é descrito abaixo pelo código:
// Inicializa o Gerenciador de Arquivos .ini
DotNetMax.Configuration.Ini.IniManager iniManager = new DotNetMax.Configuration.Ini.IniManager();

// Abrindo um Arquivo
iniManager.LoadFile("CaminhoCompletoDoArquivo.ini");

// Acessando as Configurações
string valor = iniManager.ConfigurationFile.Sections["Secao"].Entries["Chave"].Value;
string comentario = iniManager.ConfigurationFile.Sections["Secao"].Entries["Chave"].Comment;


Desta forma, o arquivo será aberto pelo componente e todas as seções e seus valores estarão automáticamente disponíveis para consulta e/ou alterações.
Observe que quaisquer alterações devem ser persistidas com o método "SaveFile" que será descrito abaixo.

3-) Criando seu Próprio Arquivo .ini

Para criar um arquivo .ini, devemos inicializar o gerenciador de arquivos ini, incluir as seções e as configurações e salvar.
No exemplo, será exibida 2 formas para incluir as seções e as configurações no gerenciador de arquivos .ini. Você poderá escolher a que mais lhe agrada para trabalhar.
// Inicializa o Gerenciador de Arquivos .ini
DotNetMax.Configuration.Ini.IniManager iniManager = new DotNetMax.Configuration.Ini.IniManager();

           
// Criando as Seções (Exemplo I)
DotNetMax.Configuration.Ini.Model.Entity.Section novaSecaoI = new DotNetMax.Configuration.Ini.Model.Entity.Section();
novaSecaoI.Name = "Seção I - Exemplo I";
            
// Adiciona as Configurações na Seção I
DotNetMax.Configuration.Ini.Model.Entity.Entry entradaI_I = new DotNetMax.Configuration.Ini.Model.Entity.Entry();
entradaI_I.Key = "Chave I-I";
entradaI_I.Value = "Valor I-I";
entradaI_I.Comment = "Comentário I-I";

// Adiciona a Entrada na Seção
novaSecaoI.Entries.Add(entradaI_I);

// Adiciona a Seção no Manager
iniManager.ConfigurationFile.Sections.Add(novaSecaoI);



// Criando as Seções (Exemplo II)
DotNetMax.Configuration.Ini.Model.Entity.Section novaSecaoII = new DotNetMax.Configuration.Ini.Model.Entity.Section();
novaSecaoI.Name = "Seção II - Exemplo II";

// Adiciona as Configurações na Seção II
novaSecaoII.Entries.Add(new DotNetMax.Configuration.Ini.Model.Entity.Entry()
    {
        Key = "Chave II-I",
        Value = "Valor II-I",
        Comment = "Comentário II-I"
    });

    novaSecaoII.Entries.Add(new DotNetMax.Configuration.Ini.Model.Entity.Entry()
    {
        Key = "Chave II-II",
        Value = "Valor II-II",
    });


// Adiciona a Seção no Manager
iniManager.ConfigurationFile.Sections.Add(novaSecaoII);

// Salva o Arquivo no Disco
iniManager.SaveFile(@"CaminhoCompletoDoArquivo.ini", true);


Ao executar o método (SaveFile), será requerido 2 parâmetros: "filePath" que é o caminho do arquivo e "overwriteIfExists" que indica ao componente para sobrescrever o arquivo de destino caso exista. Observe que caso o parâmetro (filePath) seja "false" e o arquivo de destino já exista, uma exceção do tipo (DotNetMax.Common.Exception.FileAlreadyExistsException) será lançada pelo componente

4-) Abrindo e Alterando um Arquivo .ini

Para Manipular um Arquivo .ini já existe, basta abrir-lo, manipular as seções e chaves e salvar-lo novamente.

// Inicializa o Gerenciador de Arquivos .ini
DotNetMax.Configuration.Ini.IniManager iniManager = new DotNetMax.Configuration.Ini.IniManager();

// Carrega o Arquivo
iniManager.LoadFile(@"CaminhoCompletoDoArquivo.ini");

// Removendo uma Seção
iniManager.ConfigurationFile.Sections.Remove(iniManager.ConfigurationFile.Sections["Seção X"]);

// Removendo a Configuração de uma Seção Específica
DotNetMax.Configuration.Ini.Model.Entity.Section secaoY = iniManager.ConfigurationFile.Sections["Seção Y"];
secaoY.Entries.Remove(secaoY.Entries["Chave Desejada"]);

// Alterando os Valores e Comentários de uma Chave (Exemplo I)
iniManager.ConfigurationFile.Sections["Seção V"].Entries["Chave Desejada"].Value = "Novo Valor";
iniManager.ConfigurationFile.Sections["Seção V"].Entries["Chave Desejada"].Comment = "Novo Comentário";

// Alterando os Valores e Comentários de uma Chave (Exemplo II)
Section secaoV = iniManager.ConfigurationFile.Sections["Seção V"];
secaoV.Entries["Chave Desejada"].Value = "Novo Valor";
secaoV.Entries["Chave Desejada"].Comment = "Novo Comentário";
            

// Salva o Arquivo no Disco
iniManager.SaveFile(@"CaminhoCompletoDoArquivo.ini", true);

5-) Estrutura de um Arquivo .ini

Um arquivo .ini é na realidade um arquivo texto com o conteúdo em um formato específico.
Estruturalmente ele é composto por seções e chaves de configuração.
As seções são marcadas por "[]" e as configuração são definidas por "chave=valor". Ex:

[Configuration - Client Properties]
SMS Unique Identifier=GUID:12345678-1234-1234-1234-123456789012
SMS SMBIOS Serial Number Identifier=430033556830430046003023500390030012400320033003400
SID=S-9-5-21-895842851-1789464498-2420325846
SMS Hardware Identifier 2=69015070100589FF
SMS Hardware Identifier=69015070100589FF
Last Version=4.00.6221.1700
Previous SMSUID=GUID:6ED15895-E041-4D21-97BD-5933247533D1
Last SMSUID Change Date=05/31/2010 16:36:47
[.ShellClassInfo]
LocalizedResourceName=@%SystemRoot%\system32\shell32.dll,-21786

Temos então as seções "Configuration - Client Properties" e ".SellClassInfo". Cada sessão contém várias chaves de configuração. Como exemplo temos na seção ".SellClassInfo" a chave "LocalizedResourceName" cujo valor é "@%SystemRoot%\system32\shell32.dll,-21786"

EN-US

The DotNetMax.Configuration.Ini provides a means to read and write this settings in .ini file.
English Documentations is under construction

Last edited Jun 30, 2010 at 11:35 AM by guibacellar, version 7

Comments

No comments yet.