Fórum Onde está o erro (TRegistry) ??? #231971

13/05/2004

0

Olá pessoal, tudo bem?

Estou tendo problemas para usar algumas rotinas desconhecidas (ou pouco utilizadas) do TRegistry.
Antes de perguntar, quero deixar claro que já vi no help e já pesquisei no google, etc. No help consegui solucionar a função KeySave para salvar no arquivo .reg (em formato binário), mas a função RestoreKey não consegui recuperar a bendita chave salva no arquivo. [b:9b01a1b05a]Tentei de diversas formas[/b:9b01a1b05a] mas não obtive sucesso. Claro, renomeei a pasta no registro para saber se foi recuperado e não deu em nada.

Estou usando o seguinte código para salvar (testei e funfa 100¬):

[b:9b01a1b05a]procedure[/b:9b01a1b05a] TForm1.Button1Click([b:9b01a1b05a]Sender[/b:9b01a1b05a]: TObject);
[b:9b01a1b05a]const[/b:9b01a1b05a]
(* Abaixo é umachave somente de exemplo e a mesma deve ser criada *)
_CKey = ´\CLSID\\´;
[b:9b01a1b05a]var[/b:9b01a1b05a]
_Reg : TRegistry;
_sFile : [b:9b01a1b05a]String[/b:9b01a1b05a];
[b:9b01a1b05a]begin[/b:9b01a1b05a]
__sFile:=ExpandFileName(ExtractFilePath(Application.ExeName)+´backup.reg´);
__Reg.TRegistry.Create;
__Reg.RootKey:=HKEY_ROOT_KEY; (* Não lembro, é a primeira *)
__Reg.Access:=KEY_ALL_ACCESS;
__[b:9b01a1b05a]if[/b:9b01a1b05a] Reg.SaveKey(CKey,sFile) = False then
___ShowMessage(´[i:9b01a1b05a]Ocorreu um erro: Ou você fez algo errado, ou não criou aquela chave no registro (sem a chave, vai fazer backup de que?), ou você está executando o aplicativo nas pastas [b:9b01a1b05a]´Meus Documentos´[/b:9b01a1b05a] ou [b:9b01a1b05a]´Arquivos de Programas´[/b:9b01a1b05a] ou uma de suas [b:9b01a1b05a]sub-pastas[/b:9b01a1b05a], coisa que não é permitido e não me pergunte ´o por quê´[/i:9b01a1b05a] :lol: ´);

__Reg.Free;
[b:9b01a1b05a]end[/b:9b01a1b05a];

[b:9b01a1b05a]----------------------------------------------------------------------------[/b:9b01a1b05a]

Para recuperar está dando erro, queria saber se voce sabe onde está o erro e, caso não saiba e quiser ver no help poderá ver que não estou fazendo nada de errado:

(* É claro que eu renomeei a chave para que possa ser recuperado (no registro do windows). *)

[b:9b01a1b05a]procedure[/b:9b01a1b05a] TForm1.Button2Click([b:9b01a1b05a]Sender[/b:9b01a1b05a]: TObject);
[b:9b01a1b05a]const[/b:9b01a1b05a]
(* Abaixo é umachave somente de exemplo e a mesma deve ser criada *)
_CKey = ´\CLSID\\´;
(* Tentei color somente ´\CLSID\´
[b:9b01a1b05a]var[/b:9b01a1b05a]
_Reg : TRegistry;
_sFile : [b:9b01a1b05a]String[/b:9b01a1b05a];
[b:9b01a1b05a]begin[/b:9b01a1b05a]
__sFile:=ExpandFileName(ExtractFilePath(Application.ExeName)+´backup.reg´);
__Reg.TRegistry.Create;
__Reg.RootKey:=HKEY_ROOT_KEY; (* Não lembro, é a primeira *)
__Reg.Access:=KEY_ALL_ACCESS;
__Reg.RestoreKey(CKey,sFile);

(* Tentei também com osvalores boolean como na função SaveKey dita acima e não tive sucesso, fiz várias alterações e a droga não consegue recuperar, o arquivo backup.reg está na pasta do executável como informa no link da variável, não consigo ver onde estou errando *)

__Reg.Free;
[b:9b01a1b05a]end[/b:9b01a1b05a];


Agradeço a todos que venham a solucionar, só peço que façam um teste antes, pois até vendo o help e fazendo não consegui desvendar este mistério, a outra função eu tive alguns probleminhas mas foi resolvido quando acessei o help do Delphi, quantoa este outro (RestoreKey) NADA...

:wink:

Falowww


Onjahyr

Onjahyr

Responder

Posts

13/05/2004

Onjahyr

Uma correção apenas:

procedure TForm1.Button2Click(Sender: TObject);
const
(* Abaixo é umachave somente de exemplo e a mesma deve ser criada *)
_CKey = ´\CLSID\\´;
(* Tentei color somente ´\CLSID\´
var

A mesma deve ser retirada do registry para que se possa recuperar e não como mensiona que deve ser criada, é que copiei o texto e colei, depois que fui ver, também o texto: (* Tentei color somente ´\CLSID\´

Deveria ser:

(* Tentei colocar somente ´\CLSID\´ ou ´\CLSID´, etc...


Falowww


Responder

Gostei + 0

13/05/2004

Onjahyr

Ninguém tem sugestões? :cry:

Faloww


Responder

Gostei + 0

14/05/2004

Giancarlo

Oi,

Estou passando pelo mesmo problema que você. Só que pra mim já basta eu conseguir ter o registro. Já tentei usar o TRegistry mas não consegui. O que eu quero é só a função que retorna o valor do registro. Você saber como faz isso ? (estou usando Delphi 6.0 e Windows 2000).

Obrigado.


Responder

Gostei + 0

Utilizamos cookies para fornecer uma melhor experiência para nossos usuários, consulte nossa política de privacidade.

Aceitar