Back-End

30 jul, 2007

Salvando Dados no Registro do Windows

Publicidade

Muitas vezes precisamos manipular pequenas quantidades de dados em nossas aplicações, como configurações, pequenas associações de dados, “recheio” de algum ListBox ou conceber qualquer idéia maluca que inventemos para melhorar a lógica de nosso software, onde a utilização de um banco de dados seria inviável.

De forma parecida como utilizamos arquivos INI, podemos utilizar também o próprio Registro do Windows (regedit.exe) para guardar esses dados. Porém esta abordagem é recomendada apenas para gravar configurações do programa, e não dados funcionais do programa. Afinal, não podemos encher o Registro do Windows com dados irrelevantes, pois isso afetaria diretamente o desempenho do sistema operacional.

Recomendação de uso:

Arquivos INI

– Dados funcionais do programa (conteúdo de Lists e Combos, textos e labels, configurações irrelevantes para o funcionamento do programa)

Registro do Windows

– Configurações do programa (flags, números de série, coordenadas de tela, dados que se deseje um difícil acesso pelo usuário e que sejam realmente importantes para o funcionamento do programa)

Para que possamos manipular essas informações no Registro do Windows, o Visual Basic nos fornece três funções: SaveSetting , GetSetting e DeleteSetting

As rotinas para manipular configurações no Registro do Windows seguem o mesmo padrão dos arquivos INI, onde existe uma seção, uma chave e um valor. Por definição, elas são sempre gravadas num endereço padrão dentro do Registro:

HKEY_CURRENT_USER\Software\VB and VBA Program Settings\

1 – SaveSetting – salvar configurações no registro

Sintaxe:

SaveSetting [Nome do Aplicativo], [Seção], [Chave], [Valor]

Exemplo:

SaveSetting "MeuPrograma", "Conf_Inicial", "Top", 200

Resultado no Registro do Windows:

2 – GetSetting – recuperar as configurações do registro (retorna um tipo String)

Sintaxe:

GetSetting( [Nome do Aplicativo], [Seção], [Chave] )

Exemplo:

Dim Retorno As String
Dim ValorTop As Integer
Retorno = GetSetting("MeuPrograma", "Conf_Inicial", "Top")
ValorTop = CInt(Retorno)

Uma observação que devemos fazer é que os dados manipulados, tanto para leitura quanto para escrita, são sempre texto (String). Ou seja, ao se gravar um número, ele vira String. Logo, para ler o mesmo, obteremos uma String que deveremos converter em número novamente.

3 – DeleteSetting – remover as configurações do registro

Sintaxe:

Excluir todas seções

DeleteSetting [Nome do Aplicativo]

Excluir uma seção inteira

DeleteSetting [Nome do Aplicativo], [Seção]

Excluir apenas uma chave

DeleteSetting [Nome do Aplicativo], [Seção], [Chave]

Exemplo:

'Deletar apenas a chave Top da seção Conf_Inicial
DeleteSetting "MeuPrograma", "Conf_Inicial", "Top"

'Deletar a seção Conf_Inicial e todas suas chaves
DeleteSetting "MeuPrograma", "Conf_Inicial"

'Deletar todas as seções e chaves do programa
DeleteSetting "MeuPrograma"

Algumas observações (casos críticos):

– SaveSetting em aplicativos, seções ou chaves inexistentes: sem problemas, ele apenas retorna uma String vazia “”;

– DeleteSetting para aplicativos, seções ou chaves inexistentes: cuidado, ocorre um erro de execução (Run-time error ‘5’).

Apenas uma recomendação: se o seu programa criar uma pasta de configurações no Registro do Windows ao ser instalado, é recomendável que você a remova no ato da desinstalação, para deixar o registro do usuário o mais limpo possível (que bom seria se todos os programas do mundo fizessem isso… mas sempre podemos fazer a nossa parte né). Até a próxima!