Arquivos .INI

Started by Dark_Side, 26 de November , 2006, 08:01:24 PM

Previous topic - Next topic

0 Members and 1 Guest are viewing this topic.

Dark_Side

Hi,

Neste artigo, veremos como utilizar arquivos de extensão .INI (parâmetros de configuração) para armazenar e obter informações.
Normalmente, escrevemos e utilizamos uma função própria para isto, porém, existe uma maneira muito mais fácil - utilizando a API do WINDOWS =)

As funções responsáveis por tal são: GetPrivateProfileString e WritePrivateProfileString. A primeira é utilizada para obter um determinado valor, a última é utilizada para escrevermos valores.

Para começar, devemos declarar estas funções:

Private Declare Function GetPrivateProfileString Lib "kernel32" Alias "GetPrivateProfileStringA" (ByVal Secao As String, ByVal parametro As Any, ByVal padrao As String, ByVal variavel As String, ByVal tam As Long, ByVal arquivo As String) As Long

Private Declare Function WritePrivateProfileString Lib "kernel32" Alias "WritePrivateProfileStringA" (ByVal Secao As String, ByVal parametro As Any, ByVal valor As Any, ByVal arquivo As String) As Long

Vamos ver um exemplo de um programa que escreve valores em um arquivo .INI:

Private Declare Function GetPrivateProfileString Lib "kernel32" Alias "GetPrivateProfileStringA" (ByVal Secao As String, ByVal parametro As Any, ByVal padrao As String, ByVal variavel As String, ByVal tam As Long, ByVal arquivo As String) As Long

Private Declare Function WritePrivateProfileString Lib "kernel32" Alias "WritePrivateProfileStringA" (ByVal Secao As String, ByVal parametro As Any, ByVal valor As Any, ByVal arquivo As String) As Long


Private Sub Form_Load()
Dim nome As String
Dim sobrenome As String
Dim arquivo As String

arquivo = App.Path + "\config.ini"

nome = InputBox("Qual seu nome?")
sobrenome = InputBox("Sobrenome:")

Call WritePrivateProfileString("CONFIGURAÇÃO", "nome", nome, arquivo)
Call WritePrivateProfileString("CONFIGURAÇÃO", "sobrenome", sobrenome, arquivo)

End Sub

O programa acima solicita a entrada do seu nome e sobrenome e escreve-os no arquivo "config.ini".

Vamos ver passo a passo:

Dim nome As String
Dim sobrenome As String
Dim arquivo As String

Nos declaramos as variáveis que irão armazenar, respectivamente: nome digitado, sobrenome digitado e caminho do arquivo INI.

O caminho do arquivo é armazenado através da seguinte linha:

arquivo = App.Path + "\config.ini"
O método App.Path retorna o diretório em que o executável está. Por exemplo, se o programa estivesse em "C:\exemplo", a variável "arquivo" conteria: "c:\exemplo\config.ini".

Obtemos o nome e o sobrenome:

nome = InputBox("Qual seu nome?")
sobrenome = InputBox("Sobrenome:")

Escrevemos os dados:

Call WritePrivateProfileString("CONFIGURAÇÃO", "nome", nome, arquivo)
Call WritePrivateProfileString("CONFIGURAÇÃO", "sobrenome", sobrenome, arquivo)

Após executar o programa, o arquivo "config.ini" será criado e irá conter o seguinte:

Quote[CONFIGURAÇÃO]
nome=NOME DIGITADO
sobrenome=SOBRENOME DIGITADO

Dizemos que:

Quote[CONFIGURAÇÃO] -> seção;
nome e sobrenome -> parâmetros;
NOME DIGITADO e SOBRENOME DIGITADO -> valores.

A sintaxe da função WritePrivateProfileString é:

QuoteWritePrivateProfileString Seção, Parâmetro, Valor, Arquivo

    Seção:
       como já foi dito, é a identificação entre [] (colchetes).

    Parâmetro:
       seria o nome do parâmetro a adicionar.

    Valor:
       valor do parâmetro.

    Arquivo:
       caminho do arquivo .INI.


Obs:: Se você escrever diferentes valores, em um parâmetro de um seção, irá constar apenas o último. Exemplo:

WritePrivateProfileString "CONFIGURAÇÃO", "numero", "10", arquivo
WritePrivateProfileString "CONFIGURAÇÃO", "numero", "20", arquivo
WritePrivateProfileString "CONFIGURAÇÃO", "numero", "30", arquivo

No exemplo acima, teríamos:

Quote[CONFIGURAÇÃO]
numero=30

Veremos agora como proceder para obter valores. Observe:

Private Declare Function GetPrivateProfileString Lib "kernel32" Alias "GetPrivateProfileStringA" (ByVal Secao As String, ByVal parametro As Any, ByVal padrao As String, ByVal variavel As String, ByVal tam As Long, ByVal arquivo As String) As Long

Private Declare Function WritePrivateProfileString Lib "kernel32" Alias "WritePrivateProfileStringA" (ByVal Secao As String, ByVal parametro As Any, ByVal valor As Any, ByVal arquivo As String) As Long

Private Sub Form_Load()
Dim nome As String
Dim sobrenome As String
Dim arquivo As String
Dim retlen As Long

arquivo = App.Path + "\config.ini"

nome = String(256, 0)
sobrenome = String(256, 0)

retlen = GetPrivateProfileString("CONFIGURAÇÃO", "nome", "", nome, 256, arquivo)
nome = Left(nome, retlen)

retlen = GetPrivateProfileString("CONFIGURAÇÃO", "sobrenome", "", sobrenome, 256, arquivo)
sobrenome = Left(sobrenome, retlen)

If nome = "" Then
MsgBox "O parâmetro NOME não foi encontrado!", vbCritical
Else
MsgBox "O nome é: " + nome
End If

If sobrenome = "" Then
MsgBox "O parâmetro SOBRENOME não foi encontrado!", vbCritical
Else
MsgBox "O sobrenome é: " + sobrenome
End If

End Sub

Bem, temos uma estrutura um pouco mais complexa. Vamos ver:

Dim retlen As Long
Essa variável é responsável por obter o número de bytes do valor requisitado.

Precisamos reservar um espaço nas variáveis para podermos armazenar os valores:

' Armazena 256 bytes
nome = String(256, 0)
sobrenome = String(256, 0)

As linhas abaixos, são responsáveis por obter os valores dos parâmetros, nome e sobrenome, respectivamente:

retlen = GetPrivateProfileString("CONFIGURAÇÃO", "nome", "",nome,256, arquivo)
nome = Left(nome, retlen)

retlen = GetPrivateProfileString("CONFIGURAÇÃO", "sobrenome", "", sobrenome, 256, arquivo)
sobrenome = Left(sobrenome, retlen)

Vamos destacar as linhas:

nome = Left(nome, retlen)
sobrenome = Left(sobrenome, retlen)

Caso o valor não ocupe os 256 bytes, teremos bytes sobrando. Para contornar isso, iremos obter apenas a parte relacionada ao valor do parâmetro.

Sintaxe da função GetPrivateProfileString:
QuoteGetPrivateProfileString Seção, Parâmetro, Padrão, Variável, Tam, Arquivo
     
    Seção:
       É a identificação entre [] (colchetes).

    Parâmetro:
       seria o nome do parâmetro a adicionar.

    Padrão:
       é o valor que deve ser retornado caso o parâmetro não for encontrado.

    Variável:
       variável que irá armazenar o valor.

    Tam:
       tamanho em bytes reservado na variável.

    Arquivo:
       caminho do arquivo .INI.


A função retorna um valor do tipo LONG contendo o número de bytes que o valor possui.

As linhas abaixo verificam se os valores foram obtidos e os mostra, caso afirmativo:

If nome = "" Then
MsgBox "O parâmetro NOME não foi encontrado!", vbCritical
Else
MsgBox "O nome é: " + nome
End If

If sobrenome = "" Then
MsgBox "O parâmetro SOBRENOME não foi encontrado!", vbCritical
Else
MsgBox "O sobrenome é: " + sobrenome
End If

Nome que verificamos se o valor das variáveis está vazio. Isso pois passamos um valor vazio para o argumento "Padrão" da função GetPrivateProfileString.


Bem simples não?
É isso....
Bye.

insanity

Nem Curto VB, eu acabei de ler, lol