Windows registry e INI files
O Windows sistem registro é uma base de dados hierárquica onde aplicações armazenam informação de configuração. A classe VCL TRegistry fornece métodos para ler e escrever o registro.
Até Windows 95, a maioria da aplicações armazenavam informações de configuração em arquivos de inicialização, geralmente nomeados com extensão .INI. A VCL provê as seguintes classes para facilitar a manutenção e migração de programas que usam arquivos INI:
TRegistry para trabalhar com o registro.
TIniFile ou TMemIniFile para trabalhar com Windows 3.x estilo arquivos INI.
TRegistryIniFile quando você quiser trabalhar tanto com o registro quanto com arquivos INI. TRegistryIniFile possui propriedades e métodos similares aos de TIniFile, mas é lido e escrito para o sistem registro. Em usando uma variável do tipo TCustomIniFile (o ancestral comum de TIniFile, TMemIniFile, e TRegistryIniFile), você pode escrever códigos genéricos que acessam um ou outro: o registro ou um arquivo INI, dependendo de onde ele é chamado.
Usando TINIFile
O formato arquivo INI ainda é popular, pois muitas das configurações de arquivos do C++Builder (como o ambiente DSK Desktop) são neste formato. Pelo fato de este formato de arquivo ser e estar predominante, a VCL provê uma classe que realiza leitura e escrita destes arquivos com bastante facilidade. Quando você instanciar o objeto arquivo INI, você passa como um parâmetro para o construtor o nome do arquivo INI. Se o arquivo não existe, ele é criado automaticamente. Então você é livre para ler valores usando ReadString, ReadInteger, ou ReadBool. Alternativamente, se você quiser para ler uma seção completa do arquivo INI, você pode usar o método ReadSection. Similarmente, você pode escrever valores usando WriteBool, WriteInteger, ou WriteString.
A seguir, está um exemplo de leitura configuração informação de um arquivo INI num construtor form's e escrita valor no evento OnClose.
void __fastcall TForm1::TForm1(TObject *Sender)
{
TIniFile *ini;
ini = new TIniFile(
ChangeFileExt( Application->ExeName, ".INI" ) );
Top = ini->ReadInteger( "Form", "Top", 100 );
Left = ini->ReadInteger( "Form", "Left", 100 );
Caption = ini->ReadString( "Form", "Caption",
"Default Caption" );
ini->ReadBool( "Form", "InitMax", false ) ?
WindowState = wsMaximized :
WindowState = wsNormal;
delete ini;
}
void __fastcall TForm1::FormClose(TObject *Sender, TCloseAction &Action)
{
TIniFile *ini;
ini = new TIniFile(ChangeFileExt( Application->ExeName, ".INI" ) );
ini->WriteInteger( "Form", "Top", Top );
ini->WriteInteger( "Form", "Left", Left );
ini->WriteString ( "Form", "Caption", Caption );
ini->WriteBool ( "Form", "InitMax",
WindowState == wsMaximized );
delete ini;
}
Cada uma das rotinas pega três parâmetros. A primeira seção identifica a seção dos arquivos INI. O segundo parâmetro identifica o valor que você quer para ler, e o terceiro é um valor default para o caso de a seção ou valor não existir no arquivo INI. Similarmente, o escrever rotinas criará a seção valor and/or (e/ou) se eles não existem. O código exemplo cria um arquivo INI que a primeira vez que ele é executado terá um aspecto assim como:
[Form] Top=185 Left=280 Caption=Default Caption InitMax=0
Em execução subseqüente desta aplicação, o valor INI será interpretado durante a criação do form e escrito posterior fora no evento OnClose.
Usando TRegistry
A maioria das aplicações 32 bits armazenam suas informações no registro no lugar de arquivos INI porque o registro é hierárquico, mais robusto e não sofre as limitações de tamanho dos arquivos INI. O objeto TRegistry contém métodos para abrir, fechar, salvar, mover, copiar e deletar chaves.
O seguinte exemplo devolve um valor de uma entrada de registro:
#include <Registry.hpp>
AnsiString GetRegistryValue(AnsiString KeyName)
{
AnsiString S;
TRegistry *Registry = new TRegistry;
try
{
Registry->RootKey = HKEY_LOCAL_MACHINE;
// False porque nós não queremos criá-lo se ele não existe
Registry->OpenKey(KeyName,false);
S = Registry->ReadString("VALUE1");
}
__finally
{
delete Registry;
}
return S;
}
Usando TRegINIFile
Se você está acostumado com arquivos INI e precisa mudar sua configuração para informações sobre registro, você pode usar a classe TRegINIFile. TRegINIFile é desenhado para criar entradas de registro com aparência como entradas arquivos INI. Todos os métodos de TINIFile (leitura e escrita) existem em TRegINIFile. Quando você construir um objeto TRegINIFile, o parâmetro que você passar (o filename para um objeto INIFile) torna-se uma chave. Na realidade, este objeto simplifica consideravelmente a interface do registro, portanto talvez você prefira usá-lo no lugar do componente TRegistry.
|
HOME || MAPA DO SITE || CURSOS || TUTORIAIS || LINKS || FORUM || CONTATO |