Escrever numero binario no registro do windows

Delphi

26/05/2003

eu usei reg.writebinarydata(´valor´, ´conteudo´) soh q deu erro, como eu faco pra escrever um valor binario no registro?


Smyle

Smyle

Curtidas 0

Respostas

Rafael Roni

Rafael Roni

26/05/2003

hehehe essa eu tive trabalho mas tá ai

type
{ Declara um tipo registro }
TFicha = record
Codigo: integer;
Nome: string[40];
DataCadastro: TDateTime;
end;

//para gravar os dados

procedure TForm1.Button1Click(Sender: TObject);
var
Reg: TRegistry;
Ficha: TFicha;
begin
{ Coloca alguns dados na variável Ficha }
Ficha.Codigo := StrToInt(Edit1.Text);
Ficha.Nome := Edit2.Text;
Ficha.DataCadastro := StrToDate(Edit3.Text);
Reg := TRegistry.Create;
try
{ Define a chave-raiz do registro }
Reg.RootKey := HKEY_CURRENT_USER;
{ Abre uma chave (path). Se não existir cria e abre. }
Reg.OpenKey(´Cadastro\Pessoas\´, true);
{ Grava os dados (o registro) }
Reg.WriteBinaryData(´Dados´, Ficha, SizeOf(Ficha));
finally
Reg.Free;
end;
end;

// para ler os dados

procedure TForm1.Button2Click(Sender: TObject);
var
Reg: TRegistry;
Ficha: TFicha;
begin
Reg := TRegistry.Create;
try
{ Define a chave-raiz do registro }
Reg.RootKey := HKEY_CURRENT_USER;
{ Se existir a chave (path)... }
if Reg.KeyExists(´Cadastro\Pessoas´) then
begin
{ Abre a chave (path) }
Reg.OpenKey(´Cadastro\Pessoas´, false);
{ Se existir o valor... }
if Reg.ValueExists(´Dados´) then
begin
{ Lê os dados }
Reg.ReadBinaryData(´Dados´, Ficha, SizeOf(Ficha));
Edit1.Text := IntToStr(Ficha.Codigo);
Edit2.Text := Ficha.Nome;
Edit3.Text := DateToStr(Ficha.DataCadastro);
end else
ShowMessage(´Valor não existe no registro.´)
end else
ShowMessage(´Chave (path) não existe no registro.´);
finally
Reg.Free;
end;
end;


GOSTEI 0
Smyle

Smyle

26/05/2003

essa dica tem no 800 dicas de delphi do loyd soft, eu usei isso, mas nao sei da onde veio esse tficha por exemplo, entao se puder exemplificar ficarei muito grato


GOSTEI 0
Smyle

Smyle

26/05/2003

E AE MINHA GENTE??? EH IMPOSSIVEL QUE NUM FORUM DESSA DIMENSAO NINGUEM SAIBA FAZER ISSO, POR FAVOR, COLABOREM !!!!

MUITO GRATO !!!


GOSTEI 0
Rodrigo Costa

Rodrigo Costa

26/05/2003

Essa Tficha é um objeto do tipo record, ou seja, uma variável composta por outras variáveis de tipos diferentes.

Quanto ao método WriteBinaryData do TRegistry, você deve passar três parâmetros: o nome do valor do registro que vc quer escrever, o conteúdo deste valor (tem que ser passado através de uma variável qualquer) e o tamanho do valor que você quer gravar.

WriteBinaryData(const Name: String; var Buffer; BufSize: Integer);

Exemplo:

para gravar um valor em binário:

reg:=tregistry.Create;
        reg.RootKey:=HKEY_CURRENT_USER;
        reg.OpenKey(´\Control Panel´,false);
        variavel:=´texto´;
        reg.WriteBinaryData(´teste´,variavel,sizeof(variavel));


para ler um valor armazenado em binário:

reg.ReadBinaryData(´teste´,variavel,sizeof(variavel));
        edit1.Text:=variavel;


BinaryData é a forma como o dado, seja ela qual for o tipo(string,integer...) é armazenado no registro.

Abraço,

Rodrigo Costa


GOSTEI 0
POSTAR