Pesquisar

3 de nov. de 2011

Arquivos .ini no Windows - Criação

Primeiro, abrir o bloco de notas usa-lo para criar estes arquivos e após finalizar, salvar com .ini no final. São arquivos feitos para fornecer configurações e informações de usuários/sistemas. Um arquivo INI é um arquivo com dados externo ao programa principal e está formatado em : Secções(FileName) , Entradas e Valores :


[Seçao1]
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 SHOW.INI para guardar algumas preferências do usuário. Sua estrutura é a seguinte:

[Geral]
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:

Declare Function GetPrivateProfileString Lib "kernel32" Alias "GetPrivateProfileStringA" (ByVal lpApplicationName As String, ByVal lpKeyName As Any, ByVal lpDefault As String, ByVal lpReturnedString As String, ByVal nsize As Long, ByVal lpFileName As String) As Long

2-) API usada para escrever em uma arquivo INI. Geralmente você faz esta declaração em um módulo

Declare Function WritePrivateProfileString Lib "kernel32" Alias "WritePrivateProfileStringA" (ByVal lpApplicationName As String, ByVal lpKeyName As Any, ByVal lpString As Any, ByVal lpFileName As String) As Long

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 Function ReadINI(Secao As String, Entrada As String, Arquivo As String)
'Arquivo=nome do arquivo ini
'Secao=O que esta entre []
'Entrada=nome do que se encontra antes do sinal de igual
Dim retlen As String
Dim Ret As String
Ret = String$(255, 0)
retlen = GetPrivateProfileString(Secao, Entrada, "", Ret, Len(Ret), Arquivo)
Ret = Left$(Ret, retlen)
ReadINI = Ret
End Function

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 Sub WriteINI(Secao As String, Entrada As String, Texto As String, Arquivo As String)
'Arquivo=nome do arquivo ini
'Secao=O que esta entre []
'Entrada=nome do que se encontra antes do sinal de igual
'texto= valor que vem depois do igual
WritePrivateProfileString Secao, Entrada, Texto, Arquivo
End Sub

No nosso caso para Ler os valores do arquivo SHOW.INI usamos o seguinte código:

valortempo = ReadINI("Geral", "Tempo", App.Path & "\show.ini")
valorajuda = ReadINI("Geral", "Ajuda", App.Path & "\show.ini")
atualizaperguntas = ReadINI("Geral", "Atualiza", App.Path & "\show.ini")

As variáveis valortempo, valorajuda e atualizaperguntas irão armazenar os valores lidos do arquivo Show.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:

Call WriteINI("Geral", "Tempo", txttempo.Text, App.Path & "\show.ini")
Call WriteINI("Geral", "Ajuda", txtajuda.Text, App.Path & "\show.ini")
Call WriteINI("Geral", "Atualiza", txtatualiza.Text, App.Path & "\show.ini")

Os valores são informados nas caixas de texto txttempo.txt , txtajuda.text e txtatualiza.text . Como isso lemos e escrevemos em arquivos INI.


De: José Carlos Macoratti
Fonte: http://www.macoratti.net/

Nenhum comentário:

Postar um comentário