Ir para conteúdo
Faça parte da equipe! (2024) ×
Conheça nossa Beta Zone! Novas áreas a caminho! ×
  • Quem está por aqui   0 membros estão online

    • Nenhum usuário registrado visualizando esta página.

Acessando/Manipulando o Registro do Windows


TheLucasFuck
 Compartilhar

Posts Recomendados

Delphi//

 

Os sistemas desenvolvidos cada vez mais precisam de informações de configuração e opções (como senhas, posições de impressão e coisas do tipo) e você precisa gravar estas informações em algum lugar.

 

O Delphi possibilita armazenar estas informações em Arquivos .INI (lembra deles...do Windows 3.x) através do Objeto TInifile, mas a não ser q você esteja utilizando esta versão do Windows (coisa q eu acho difícil..rsrsrs), a melhor alternativa é utilizar o registro do Sistema, que já está disponível a partir da versão Windows 95.

 

Se você não sabe do que eu estou falando, não se desespere. Antes de começar a utilizar estas informações vá até Iniciar-Executar e digite Regedit. O editor do registro do sistema será exibido e você poderá ter uma idéia de como ele funciona. O programa separa as opções de registro em "pastas", conhecidas aqui como "chaves". Essas chaves contém dados, chamados de "valores". Esses valores possuem um nome, um tipo e um valor específico.

 

O Delphi encapsula o registro através do objeto TRegistry. É através dele que você irá acessar os dados do Registro. Para você entender melhor como funciona o objeto, vamos explicar primeiro como funciona o Registro do Windows:

 

As principais chaves "raízes" são: HKEY_LOCAL_******* e HKEY_CURRENT_USER. Todas as informações sobre os programas ficam nessas chaves (as outras normalmente possuem informações sobre o Windows).

 

O InstallShield (programa para geração de instaladores), por exemplo, instala as informações sobre o nome de usuário e empresa do seu programa em HKEY_LOCAL_*******SOFTWARENome da Sua EmpresaNome Do ProgramaVersão, com os valores Company e Name (Empresa e Nome do Usuário).

 

Os programas, por sua vez, usam a chave HKEY_CURRENT_USERSoftware para armazenar informações de seus programas. E é nessa chave que você deve inserir sua sub-chave e colocar lá as informações necessárias.

 

Um pequeno exemplo de como utilizar o registro do Windows. Suponhamos que o programa necessite gravar a posição da janela, o seu tamanho e o diretório inicial dos diálogos Abrir e Salvar.

 

Após a criação do objeto, devemos informar qual chave devemos utilizar, utilizando o método

OpenKey (Chave, PodeCriar);

onde Chave é o nome da sub-chave e PodeCriar é um valor booleano que permite (ou não) criar a chave caso a mesma não exista.

 

Bom, agora vamos logo ao que interessa. A gravação/Leitura no Registro.

Este exemplo ilustra como gravar dados no Registro.

 

Primeiramente devemos declarar a Unit Registry na clausula Uses de sua aplicação.

 

procedure frmMain.GravarRegistro;

const

Raiz : String = 'SoftwarePrograma';

var

Registro : TRegistry;

begin

// Chama o construtor do objeto

Registro := TRegistry.Create;

{ Abre a chave (se o 2°. Parâmetro for True, ele cria a chave caso ela ainda não exista. }

Registro.OpenKey (Raiz, True);

// Grava as informações do form

Registro.WriteInteger ('Largura', Width);

Registro.WriteInteger ('Altura', Height);

Registro.WriteInteger ('Esquerda', Left);

Registro.WriteInteger ('Topo', Top);

// Grava as informações das caixas Abrir e Salvar.

Registro.WriteString ('Abrir Inicial', OpenDialog1.InitialDir);

Registro.WriteString('Salvar Inicial', SaveDialog1.InitialDir);

// Fecha a chave e o objeto

Registro.CloseKey;

Registro.Free;

end;

 

 

Após a criação do objeto, deve-se escolher uma chave para armazenas os valores. No caso, "SoftwarePrograma", cuja chave raiz é HKEY_CURRENT_USER. Note que é para se separar as chaves das sub-chaves utiliza-se o caracter "", tal como nos diretórios do DOS.

 

Os métodos WriteInteger e WriteString são utilizados para gravar valores inteiros e caracteres, respectivamente. A sintaxe básica é:

 

Registro.WriteString (NomeDoValor, Conteúdo);

 

 

onde NomeDoValor é o nome que você vai dar ao valor dentro da chave, e Conteúdo é o conteúdo desse valor.

 

Para escrever dados de outros tipos, utilize as funções:

 

WriteBool (NomeDoValor, Conteúdo); // Dados tipo Boolean

WriteBinaryData (NomeDoValor, Conteúdo); // Valor Binário

WriteCurrency (NomeDoValor, Conteúdo); // Dados tipo Currency

WriteDate (NomeDoValor, Conteúdo); // Dados tipo TDate

WriteDateTime (NomeDoValor, Conteúdo); // Dados tipo TDateTime

WriteFloat (NomeDoValor, Conteúdo); // Dados tipo Float (Real)

WriteInteger (NomeDoValor, Conteúdo); // Dados tipo Integer

WriteString (NomeDoValor, Conteúdo); // Dados tipo String

WriteTime (NomeDoValor, Conteúdo); // Dados tipo TTime

 

 

Este exemplo mostra como podemos ler dados do registro do Windows utilizando o Delphi.

 

procedure frmMain.LerRegistro;

const

Raiz : String = ‘SoftwarePrograma';

var

Registro : TRegistry;

begin

// Chama o construtor do objeto

Registro := TRegistry.Create;

with Registro do

begin

// Somente abre se a chave existir

if OpenKey (Raiz, False) then

// Envia as informações ao form, vendo se os valores existem, primeiramente...

if ValueExists ('Largura') then

Width := ReadInteger ('Largura');

if ValueExists ('Altura') then

Height := ReadInteger ('Altura');

if ValueExists ('Esquerda') then

Left := ReadInteger ('Esquerda');

if ValueExists ('Topo') then

Top := ReadInteger ('Topo');

// Envia as informações para as caixas Abrir e Salvar.

OpenDialog1.InitialDir := ReadString ('Abrir Inicial');

SaveDialog1.InitialDir := ReadString ('Salvar Inicial');

// Fecha a chave e o objeto

Registro.CloseKey;

Registro.Free;

end;

End;

 

 

Sempre use CloseKey quando não for precisar do Registro. Isso permite que as opções sejam gravadas permanentemente, evitando que qualquer problema que o computador tenha afete seu programa.

 

Os métodos ReadInteger e ReadString funcionam praticamente da mesma maneira que seus correspondentes de escrita. A diferença é que ao invés de passar o valor Conteúdo, eles retornam o valor armazenado. Os correspondentes dos outros tipos são:

 

ReadBool (NomeDoValor) // Valor booleano

ReadBinaryData ( NomeDoValor ; var Buffer ; TamBuffer : Integer) // Valor Inteiro

ReadCurrency (NomeDoValor) // Valor Currency

ReadDate (NomeDoValor) // Valor Date

ReadDateTime (NomeDoValor) // Valor DateTime;

ReadFloat (NomeDoValor) // Valor Float(Real)

ReadInteger (NomeDoValor) // Valor Inteiro

ReadString (NomeDoValor) // Valor String;

ReadTime (NomeDoValor) // Valor DateTime

 

 

É isso aí pessoal....

OPEN MINDED

Link para o comentário
Compartilhar em outros sites

Este tópico está impedido de receber novos posts.
 Compartilhar

×
×
  • Criar Novo...

Informação Importante

Nós fazemos uso de cookies no seu dispositivo para ajudar a tornar este site melhor. Você pode ajustar suas configurações de cookies , caso contrário, vamos supor que você está bem para continuar.