Trabalhando com Arquivos INI no Visual Basic

O que é um arquivo 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

  • 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:

No nosso caso estamos usando o arquivo 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.

José Carlos Macoratti
Fonte: Macoratti

Compatilhe esse artigo!

One thought on “Trabalhando com Arquivos INI no Visual Basic

Leave a Reply

Deixe uma resposta

O seu endereço de e-mail não será publicado. Campos obrigatórios são marcados com *

This site uses Akismet to reduce spam. Learn how your comment data is processed.