Foros Club Delphi

Foros Club Delphi (https://www.clubdelphi.com/foros/index.php)
-   Varios (https://www.clubdelphi.com/foros/forumdisplay.php?f=11)
-   -   Registro con valor BINARIO !!! (https://www.clubdelphi.com/foros/showthread.php?t=44465)

Ledian_Fdez 06-06-2007 23:14:51

Registro con valor BINARIO !!!
 
Código Delphi [-]
procedure TForm1.Button1Click(Sender: TObject);
var  
 Registro : TRegistry;
begin 
 try
   Registro := TRegistry.Create;
   Registro.RootKey := HKEY_LOCAL_MACHINE;
   if Registro.OpenKey('SOFTWARE\Cedipad\Claves\Caper', False) then
     begin
      if not(Registro.ValueExists('reg')) then
         Registro.WriteBinaryData('reg', ?, ?);
     end
   CloseKey; 
 finally
   Registro.Free;
 end;
end;


Amigos la duda esta en los parametros de entrada de la funcion
WriteBinaryData(const Name: String; var Buffer; BufSize: Integer);

Suponga que abrimos el registro de Windows y buscamos en KEY_LOCAL_MACHINE\SOFTWARE\Cedipad\Claves\Caper y ahi creo un valor binario con el nombre de reg. ¿Que valores debo poner en tal funcion?

Grasias de antemano
y ruego que me ayuden.

De todas formas les reitero las grasias.

Salu2 Ledian

cHackAll 07-06-2007 00:25:58

Ok
 
Puedes poner CUALQUIER cosa, por ejemplo si es de tu agrado, no es lo mejor pero podrias poner hasta un archivo entero, un paquete de Socket, una Variable, lo que sea... por ejemplo voy a meter al Icono de la aplicacion al registro, junto con el nombre donde lo guardo temporalmente y su tamaño.

Código Delphi [-]
uses Registry;
 
const FileName: PChar = 'c:\ProjectX.ico';
 
var Buffer: array [0..1024*1024-1] of Char; // Buffer de hasta un mega para el ejemplo

procedure TForm1.Button1Click(Sender: TObject);
var Registro: TRegistry; hFile, Size: Cardinal;
begin
 Application.Icon.SaveToFile(FileName);
 hFile := CreateFile(FileName, GENERIC_READ, 0, nil, OPEN_EXISTING, 0, 0);
 ReadFile(hFile, Buffer, GetFileSize(hFile, nil), Size, nil);
 CloseHandle(hFile);
 try
  Registro := TRegistry.Create;
  Registro.RootKey := HKEY_LOCAL_MACHINE;
  if Registro.OpenKey('SOFTWARE', False) then
   begin
    Registro.WriteBinaryData('FileName', FileName^, StrLen(FileName) + 1);
    Registro.WriteBinaryData('Size', Size, 4);
    Registro.WriteBinaryData('Data', Buffer, Size);
   end;
  Registro.CloseKey;
 finally
  Registro.Free;
 end;
end;

Sin embargo como ya te comentaba no es correcto meter todo un archivo, lo hice solo para darte una idea... te aconsejo leer la ayuda del propio Delphi a la API 'RegSetValueEx' para tener una idea de los métodos de optimizacion que pensaron los de Microsoft para ésto tipo de variable...

Espero me hayas entendido.


La franja horaria es GMT +2. Ahora son las 21:43:30.

Powered by vBulletin® Version 3.6.8
Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
Traducción al castellano por el equipo de moderadores del Club Delphi