pastebin - collaborative debugging

pastebin is a collaborative debugging tool allowing you to share and modify code snippets while chatting on IRC, IM or a message board.

This site is developed to XHTML and CSS2 W3C standards. If you see this paragraph, your browser does not support those standards and you need to upgrade. Visit WaSP for a variety of options.

Delphi pastebin - collaborative debugging tool View Help


Posted by JimmySkull on Fri 20 Jun 15:08 (modification of post by JimmySkull view diff)
report abuse | download | new post

  1. // Usando o Registro do Windows
  2. // http://0x1f.blogspot.com/
  3.  
  4. uses Registry; // Adicionar a unit Registry em uses
  5.  
  6. // Primeira dica:
  7. procedure TForm1.Button1Click(Sender: TObject);
  8. var
  9.   Reg: TRegistry;
  10. begin
  11.   Reg := TRegistry.Create;
  12.   with Reg do
  13.   try
  14.     RootKey := HKEY_CLASSES_ROOT;
  15.     OpenKey('\MeuPrograma', True);
  16.     WriteString('', 'Arquivo do meu programa'); //Nome dado ao arquivo de sua aplicação. "Ex: Imagem Gif".
  17.     CloseKey;
  18.     OpenKey('MeuPrograma\DefaultIcon', True);
  19.     // O primeiro parâmetro da linha de comando abaixo, é para escrever uma string vazia.
  20.     // E o último parâmetro é para colocar o ícone da sua aplicação nos arquivos que serão abertos por ela.
  21.     WriteString('', Application.ExeName + ',0');
  22.     CloseKey;
  23.     OpenKey('MeuPrograma\Shell\Open\Command', True);
  24.     WriteString('', Application.ExeName + ' "%1"');
  25.     CloseKey;
  26.     RootKey := HKEY_CLASSES_ROOT;
  27.     OpenKey('\.ext', True); // Substitua o "ext" pela extensão que você deseja utilizar.
  28.     WriteString('', 'MeuPrograma');
  29.     CloseKey;
  30.   finally
  31.     Reg.CloseKey;
  32.     Reg.Free;
  33.   end;
  34. end;
  35.  
  36. { Segunda dica, com ela você aprenderá como ler ou escrever um valor no registro do windows:}
  37. procedure Button1.Click(Sender: TObject);
  38. var
  39.   Reg: TRegistry;
  40. begin
  41.   Reg := TRegistry.Create;
  42.   with Reg do begin
  43.     RootKey := HKEY_LOCAL_MACHINE;
  44.     Openkey('Software\Microsoft\Outlook Express\5.0\Default Settings\Recent Stationery List', False);
  45.     WriteString('File0', 'Natureza.htm');
  46.     WriteString('File1', 'Dia Claro.htm');
  47.     CloseKey;
  48.   end;
  49. end; { Neste exemplo nós trocamos de ordem os papéis de carta do Microsoft Outlook Explorer, embora você possa alterar qualquer registro já existente no "regedit". Se o que você que é incluir um registro e não editar, como nós fizemos, basta que no primeiro parâmetro da linha de comando "writestring", você coloque um nome para o seu registro, que não exista nesta pasta.
  50. Agora no código abaixo veremos como ler um valor de um registro qualquer: }
  51.  
  52. procedure Button1.Click(Sender: TObject);
  53. var
  54.   Reg: TRegistry;
  55.   S: string;
  56. begin
  57.   Reg := TRegistry.Create;
  58.   with Reg do begin
  59.     RootKey := HKEY_LOCAL_MACHINE;
  60.     Openkey('SOFTWARE\MICROSOFT\WINDOWS\CURRENTVERSION\', False);
  61.     S := ReadString('version');
  62.     CloseKey;
  63.   end;
  64.   Edit1.Text := S;
  65. end; { Neste caso nós pegamos o registro "version", que significa a versão do windows, colocamos o seu valor na variável "s" e depois à "jogamos" num "edit" qualquer, apenas para que possamos visualizá-la.
  66. Agora que você já sabe como escrever no registro do windows, veremos o que precisamos escrever, para colocar a nossa aplicação para ser inicializada junto com o windows.}
  67.  
  68. procedure Button1.Click(Sender: TObject);
  69. var Reg: Tregistry;
  70. begin
  71.   Reg := TRegistry.Create;
  72.   with Reg do begin
  73.     RootKey := HKEY_LOCAL_MACHINE;
  74.     Openkey('\MICROSOFT\WINDOWS\CURRENTVERSION\RUN', False);
  75.     WriteString('MeuPrograma', PChar(Application.ExeName));
  76.     CloseKey;
  77.   end;
  78. end;
  79.  
  80. //Este exemplo mostra como funciona como podemos gravar dados do registro do Windows utilizando o Delphi 2 ou 3
  81. procedure Form1.GravarRegistro;
  82. const
  83.   Raiz : string = 'Software\Programa';
  84. var
  85.   Registro : TRegistry;
  86. begin
  87.   Registro := TRegistry.Create; // Chama o construtor do objeto
  88.   { Abre a chave (se o 2°. Parâmetro for True, ele cria a chave caso ela ainda não exista. }
  89.   Registro.OpenKey(Raiz, True);
  90.   // Grava as informações do form
  91.   Registro.WriteInteger('Largura', Width);
  92.   Registro.WriteInteger('Altura', Height);
  93.   Registro.WriteInteger('Esquerda', Left);
  94.   Registro.WriteInteger('Topo', Top);
  95.   // Grava as informações das caixas Abrir e Salvar.
  96.   Registro.WriteString('Abrir Inicial', OpenDialog1.InitialDir);
  97.   Registro.WriteString('Salvar Inicial', SaveDialog1.InitialDir);
  98.   // Fecha a chave e o objeto
  99.   Registro.CloseKey;
  100.   Registro.Free;
  101. end;
  102.  
  103. {Após a criação do objeto, deve-se escolher uma chave para armazenas os valores. No caso, "Software\Programa", 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.
  104. Os métodos WriteInteger e WriteString são utilizados para gravar valores inteiros e caracteres, respectivamente. A sintaxe básica é:
  105. Registro.WriteString (NomeDoValor, Conteúdo);
  106. {onde NomeDoValor é o nome que você vai dar ao valor dentro da chave, e Conteúdo é o conteúdo desse valor.
  107. Para se escrever dados de outros tipos, utilize as funções:
  108. }
  109. WriteBool(NomeDoValor, Conteudo);       // Boolean
  110. WriteBinaryData(NomeDoValor, Conteudo); // Valor Binário
  111. WriteCurrency(NomeDoValor, Conteudo);   // Currency
  112. WriteDate(NomeDoValor, Conteudo);       // TDateTime
  113. WriteDateTime(NomeDoValor, Conteudo);   // TDateTime
  114. WriteFloat(NomeDoValor, Conteudo);      // Float (Real)
  115. WriteInteger(NomeDoValor, Conteudo);    // Integer
  116. WriteString(NomeDoValor, Conteudo);     // string
  117. WriteTime(NomeDoValor, Conteudo);       // TDateTime { Este exemplo mostra como funciona como podemos ler dados do registro do Windows utilizando o Delphi 2 ou 3
  118.  
  119. procedure Form1.LerRegistro;
  120. const Raiz: string = 'Software\Programa';
  121. var Registro: TRegistry;
  122. begin
  123.   Registro := TRegistry.Create;         // Chama o construtor do objeto
  124.   with Registro do begin
  125.     if OpenKey(Raiz, False) then        // Somente abre se a chave existir
  126.       // Envia as informações ao form, vendo se os valores existem, primeiramente...
  127.       if ValueExists('Largura') then Width := ReadInteger('Largura');
  128.     if ValueExists('Altura') then Height := ReadInteger('Altura');
  129.     if ValueExists('Esquerda') then Left := ReadInteger('Esquerda');
  130.     if ValueExists('Topo') then Top := ReadInteger('Topo');
  131.     // Envia as informações para as caixas Abrir e Salvar.
  132.     OpenDialog1.InitialDir := ReadString('Abrir Inicial');
  133.     SaveDialog1.InitialDir := ReadString('Salvar Inicial');
  134.     // Fecha a chave e o objeto
  135.     Registro.CloseKey;
  136.     Registro.Free;
  137.   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.
  138.   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.
  139.  
  140.   Os correspondentes dos outros tipos são:                                  }  
  141.   ReadBool(NomeDoValor): Boolean;
  142.   ReadBinaryData(NomeDoValor; var Buffer; TamBuffer: Integer): Integer;
  143.   ReadCurrency(NomeDoValor): Currency;
  144.   ReadDate(NomeDoValor): TDateTime;
  145.   ReadDateTime(NomeDoValor): TDateTime;
  146.   ReadFloat(NomeDoValor): Double;
  147.   ReadInteger(NomeDoValor): Integer;
  148.   ReadString(NomeDoValor): string;
  149.   ReadTime(NomeDoValor): TDateTime;

Submit a correction or amendment below (click here to make a fresh posting)
After submitting an amendment, you'll be able to view the differences between the old and new posts easily.

Syntax highlighting:

To highlight particular lines, prefix each line with @@


Remember me so that I can delete my post