sexta-feira, 13 de outubro de 2017
sexta-feira, 6 de outubro de 2017
Aprenda a usar arquivos .ini
Um arquivo INI é um arquivo texto usado para armazenar/fornecer configurações pessoais para sistemas/usuários ; Um arquivo INI é um arquivo com dados externo ao programa principal e esta formatado em : Secções(FileName) , Entradas( e Valores
[Seçao1]
entrada=valor
entrada=valor
entrada=valor
[Seção2]
entrada=valor
entrada=valor
entrada=valor
entrada=valor
entrada=valor
[Seção2]
entrada=valor
entrada=valor
- A Seção identifica um conjunto
de entradas e valores e esta relacionado a um determinado programa. Como
muitos programas podem usar o mesmo arquivo INI ( Ex: o arquivo
WIN.INI ) geralmente uma seção trazia o nome do programa que iria
usá-la.
- Uma Entrada funciona como um
identificador para variáveis.
- Os Valores são usados , como o
próprio nome diz , para atribuir valores as entradas , e , sempre estão no
formato Strings , mesmo sendo números.
Um exemplo de arquivo INI é o WIN.IN cuja
estrutura mostramos em parte a seguir:
[windows]
load= run= NullPort=None device=HP DeskJet 690C,HPDSKJTB,LPT1: SingleClickSpeed=067614 [Desktop] Wallpaper=(None) TileWallpaper=0 WallpaperStyle=2 Pattern=120 49 19 135 225 200 140 30 |
Vamos usar como exemplo um arquivo ini
chamado SisMap.INI para guardar algumas preferências do usuário.
Sua estrutura é a seguinte:
[Geral]
Tempo=50
Ajuda=2
Atualiza=SIM
Tempo=50
Ajuda=2
Atualiza=SIM
Como
fazemos para acessar e/ou alterar os valores em um arquivo INI ?
Boa pergunta ! Para fazer isto usamos duas
API´s do Windows , vamos apresentá-las:
1-) API usada para ler os arquivos INI .
Geralmente você faz esta declaração em um módulo:
[DllImport("kernel32")]
private static extern int GetPrivateProfileString(string section,string key, string def, StringBuilder retVal,int size,string filePath); |
2-) API usada para escrever em uma arquivo
INI. Geralmente você faz esta declaração em um módulo:
[DllImport("kernel32")] private static extern long WritePrivateProfileString(string section,string key,string val,string filePath); |
Agora basta escrever duas funções que usam
estas API´s , uma ler outra para escrever. Eí-las prontas abaixo:
1-) Função - ReadINI -
lê um arquivo INI. Precisa de três parâmetros : O nome da Seção , o nome da
Entrada e o nome do Arquivo INI.
public string ReadINI(string Section,string Key,string path)
{ StringBuilder temp = new StringBuilder(255); int i = GetPrivateProfileString(Section,Key,"",temp,255, path); return temp.ToString(); } |
2-) A função - WriteINI -
escreve em um arquivo INI. Precisa de quatro parâmetros : o nome da Seção , o
nome da Entrada , o nome do Texto ( Valor ) e o nome do arquivo INI.
public void WriteINI(string Section,string Key,string Value,string path) { WritePrivateProfileString(Section,Key,Value,path); } |
No nosso caso para Ler os
valores do arquivo SisMap.INI usamos o seguinte código:
string path = Path.Combine(AppDomain.CurrentDomain.BaseDirectory, "sismap.ini");
string path = Path.Combine(AppDomain.CurrentDomain.BaseDirectory, "sismap.ini");
valortempo =
ReadINI("Geral", "Tempo",path );
valorajuda = ReadINI("Geral", "Ajuda", path ); atualizaperguntas = ReadINI("Geral", "Atualiza",path); |
As variáveis valortempo, valorajuda e atualizaperguntas irão armazenar os valores lidos do
arquivo SisMap.ini através da função ReadINI.
Para Escrever em
um arquivo INI alterando os valores das entradas: Tempo, Ajuda e
Atualiza , usamos o seguinte código:
string path = Path.Combine(AppDomain.CurrentDomain.BaseDirectory, "sismap.ini");
string path = Path.Combine(AppDomain.CurrentDomain.BaseDirectory, "sismap.ini");
WriteINI("Geral", "Tempo", txtTempo.Text, path );
WriteINI("Geral", "Ajuda", txtAjuda.Text, path ); WriteINI("Geral", "Atualiza", txtAtualiza.Text, path ); |
Os valores são informados nas caixas de
texto txtTempo.txt , txtAjuda.text e txtAtualiza.text . Como
isso lemos e escrevemos em arquivos INI.
Fonte
Fonte
Pesquisar neste blogue
Com tecnologia do Blogger.