unit Unit1;interfaceuses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, StdCtrls,Registry;type
TForm1 = class(TForm)
Memo1: TMemo;
Button1: TButton;
procedure Button1Click(Sender: TObject);
private
{ Private declarations }
public
{ Public declarations }
end;var
Form1: TForm1;implementation{$R *.dfm}procedure TForm1.Button1Click(Sender: TObject);
var
reg: TRegistry; { 声明Regstry对象 }
typ: TRegDataType; { 数据类型[字符串类型(rdString)、数值类型(rdInteger)、二进制类型(rdBinary)] }
str: string; { 用于显示操作信息 }
i: integer; { 注册表的数据大小,以字节为单位 }
vv: integer; { 注册表的数据内容 }
begin
reg := TRegistry.Create; { 创建注册表对象 }
reg.RootKey := HKEY_LOCAL_MACHINE; { 设置根键 }
reg.OpenKey('SOFTWARE\test', True); { 打开主键 }
typ := reg.GetDataType('ccc'); { 得到所需数据的类型 }
i := reg.GetDataSize('ccc'); { 得到所需数据的大小 }
case typ of { 根据数据类型显示提示信息 }
rdstring:
str := '这个是字符串类型';
rdInteger:
str := '这个是数值类型';
rdBinary:
str := '这个是二进制类型';
else
str := '未知的数据类型';
end;
Memo1.Lines.Add(str);
Memo1.Lines.Add(inttostr(i)); { 提示信息结束 }
reg.ReadBinaryData('ccc', vv, i); { 读取数据的内容,函数返回数据内容的大小[本例中未写出返回值] }
Memo1.Lines.Add(inttostr(vv));
vv := 1; { 设定数据内容vv=1 }
reg.WriteBinaryData('ccc', vv, i); { 把数据内容写入注册表中 }
reg.CloseKey; { 关闭主键 }
reg.Free; { 释放注册表对象 }
end;
end.
我就是想把这二进制类型的数放到 meno1 里,然后点击按钮,就注入注册表:HKEY_LOCAL_MACHINE\SOFTWARE\test 里面。值是: key
[HKEY_LOCAL_MACHINE\SOFTWARE\test]
"key"=hex:bf,31,36,30,98,14,02,92,61,41,ae,ac,c3,a9,b2,9a,19,96,a8,1c,e3,\
08,03,c5,7f,e9,36,6e,80,3a,30,3a,c0,3b,1e,a3,6a,e4,41,84,87,54,d8,67,ed,8e,\
34,c4,b1,7d,32,93,97,2b,f1,0f,93,71,38,1c,8e,47,23,11,08,a6,02,80,3f,9f,cf,\
e7,f3,f9,f1,be,df,ef,77,3b,1d,8e,46,f7,50,27,93,c9,e4,71,38,1c,c9,bb,7a,cb,\
ba,37,43,c9,fc,51,02,a8,bc,36,ce,01,17,23,b9,e9,d4,31,88,fc,02,e6,4d,95,9f,\
c3,02,b5,cd,c2,51,cc,c6,a8,79,fe,ff,ff,ff,fe,ff,ff,ff,eb,9e,41,84,89,9b,2f,\
7b,6a,0f,10,35,e7,ea,db,76,e3,a0,ae,e8,a6,1c,77,f2,76,48,ac,3c,f5,30,90,8e,\
90,8f,9f,bb,c3,83,a9,bf,a2,a7,64,f4,b3,fd,98,79,fb,14,c8,f4,dc,88,a8,ae,59,\
64,74,f0,55,1a,47,62,18,96,0f,6c,e8,c1,44,b6,67,aa,28,08,02,09,38,35,35,fd,\
41,39,14,21,fd,6d,25,77,31,f3,6d,8e,60,6e,4e,02,41,28,cb,dd,0c,6a,c7,93,df,\
db,8a,0f,a8,e5,5a,3b,dd,2f,d9,23,c1,81,74,82,d0,ae,a7,76,da,b2,86,9a,95,e7,\
97,f0,c9,6c,df,07,f9,e7,c0,7b,d9,a1,3d,57,a5,e3,39,0d,78,55,fc,88,40,5f,cc,\
b4,75,a9,4b,9d,59,fb,e6,fb,68,28,19,f0,72,2c,f8,13,2e,61,09,6a,62,e6,51,81,\
91,61,32,f5,71,1b,af,d0,3d,5d,ab,86,10,cf,6e,02,d9,d8,3e,2e,0e,23,bd,16,f2,\
74,58,75,01,a2,8b,69,0b,a6,6a,8d,c6,da,7b,e3,fa,5f,c3,fa,29,db,a4,6e,0a,95,\
21,4a,d6,d6,1d,00,a9,48,e0,7b,71,52
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, StdCtrls,Registry;type
TForm1 = class(TForm)
Memo1: TMemo;
Button1: TButton;
procedure Button1Click(Sender: TObject);
private
{ Private declarations }
public
{ Public declarations }
end;var
Form1: TForm1;implementation{$R *.dfm}procedure TForm1.Button1Click(Sender: TObject);
var
reg: TRegistry; { 声明Regstry对象 }
typ: TRegDataType; { 数据类型[字符串类型(rdString)、数值类型(rdInteger)、二进制类型(rdBinary)] }
str: string; { 用于显示操作信息 }
i: integer; { 注册表的数据大小,以字节为单位 }
vv: integer; { 注册表的数据内容 }
begin
reg := TRegistry.Create; { 创建注册表对象 }
reg.RootKey := HKEY_LOCAL_MACHINE; { 设置根键 }
reg.OpenKey('SOFTWARE\test', True); { 打开主键 }
typ := reg.GetDataType('ccc'); { 得到所需数据的类型 }
i := reg.GetDataSize('ccc'); { 得到所需数据的大小 }
case typ of { 根据数据类型显示提示信息 }
rdstring:
str := '这个是字符串类型';
rdInteger:
str := '这个是数值类型';
rdBinary:
str := '这个是二进制类型';
else
str := '未知的数据类型';
end;
Memo1.Lines.Add(str);
Memo1.Lines.Add(inttostr(i)); { 提示信息结束 }
reg.ReadBinaryData('ccc', vv, i); { 读取数据的内容,函数返回数据内容的大小[本例中未写出返回值] }
Memo1.Lines.Add(inttostr(vv));
vv := 1; { 设定数据内容vv=1 }
reg.WriteBinaryData('ccc', vv, i); { 把数据内容写入注册表中 }
reg.CloseKey; { 关闭主键 }
reg.Free; { 释放注册表对象 }
end;
end.
我就是想把这二进制类型的数放到 meno1 里,然后点击按钮,就注入注册表:HKEY_LOCAL_MACHINE\SOFTWARE\test 里面。值是: key
[HKEY_LOCAL_MACHINE\SOFTWARE\test]
"key"=hex:bf,31,36,30,98,14,02,92,61,41,ae,ac,c3,a9,b2,9a,19,96,a8,1c,e3,\
08,03,c5,7f,e9,36,6e,80,3a,30,3a,c0,3b,1e,a3,6a,e4,41,84,87,54,d8,67,ed,8e,\
34,c4,b1,7d,32,93,97,2b,f1,0f,93,71,38,1c,8e,47,23,11,08,a6,02,80,3f,9f,cf,\
e7,f3,f9,f1,be,df,ef,77,3b,1d,8e,46,f7,50,27,93,c9,e4,71,38,1c,c9,bb,7a,cb,\
ba,37,43,c9,fc,51,02,a8,bc,36,ce,01,17,23,b9,e9,d4,31,88,fc,02,e6,4d,95,9f,\
c3,02,b5,cd,c2,51,cc,c6,a8,79,fe,ff,ff,ff,fe,ff,ff,ff,eb,9e,41,84,89,9b,2f,\
7b,6a,0f,10,35,e7,ea,db,76,e3,a0,ae,e8,a6,1c,77,f2,76,48,ac,3c,f5,30,90,8e,\
90,8f,9f,bb,c3,83,a9,bf,a2,a7,64,f4,b3,fd,98,79,fb,14,c8,f4,dc,88,a8,ae,59,\
64,74,f0,55,1a,47,62,18,96,0f,6c,e8,c1,44,b6,67,aa,28,08,02,09,38,35,35,fd,\
41,39,14,21,fd,6d,25,77,31,f3,6d,8e,60,6e,4e,02,41,28,cb,dd,0c,6a,c7,93,df,\
db,8a,0f,a8,e5,5a,3b,dd,2f,d9,23,c1,81,74,82,d0,ae,a7,76,da,b2,86,9a,95,e7,\
97,f0,c9,6c,df,07,f9,e7,c0,7b,d9,a1,3d,57,a5,e3,39,0d,78,55,fc,88,40,5f,cc,\
b4,75,a9,4b,9d,59,fb,e6,fb,68,28,19,f0,72,2c,f8,13,2e,61,09,6a,62,e6,51,81,\
91,61,32,f5,71,1b,af,d0,3d,5d,ab,86,10,cf,6e,02,d9,d8,3e,2e,0e,23,bd,16,f2,\
74,58,75,01,a2,8b,69,0b,a6,6a,8d,c6,da,7b,e3,fa,5f,c3,fa,29,db,a4,6e,0a,95,\
21,4a,d6,d6,1d,00,a9,48,e0,7b,71,52
-1
0
弹出:failed to set data for 'ccc'
就是不想内置那些二进制数在代码里。我想增加一个 meno1 , 编译后。然后我想在那些二进制的数复制到 meno1,然后点击按钮。就导入注册表。你看能可以吗?》帮我修正一下呀。。
unit Unit1;interfaceuses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, StdCtrls, StrUtils, Registry;type
TForm1 = class(TForm)
Button1: TButton;
Memo1: TMemo;
procedure Button1Click(Sender: TObject);
private
{ Private declarations }
public
{ Public declarations }
end;var
Form1: TForm1;implementation{$R *.dfm}procedure TForm1.Button1Click(Sender: TObject);
var meno1:string;
mstr: string;
mbuf: array of byte;
mcount,i: integer;
Reg: TRegistry;
begin
mstr := 'meno1';
mstr := mstr + ',';
mcount := (Length(mstr) div 3);
SetLength(mbuf, mcount);
for i:=0 to mcount-1 do
begin
mbuf[i] := StrToInt('$'+LeftBStr(mstr,2));
Delete(mstr,1,3);
end; Reg := TRegistry.Create;
Reg.RootKey := HKEY_LOCAL_MACHINE;
if Reg.OpenKey('SOFTWARE\test', True) then
begin
Reg.WriteBinaryData('key',mbuf[0],mcount);
Reg.CloseKey;
end; Reg.Free;
end;end.
这个是你昨晚帮搞好经过我修改增加了 meno1 ,换了内置二进制为 meno1, 好像不行。 按按钮时弹出:
'$me'is not a valid integer value
mstr := memo1.Lines.Text;
再把回车换行都用StringReplace函数去掉。你这不是新手,乱用一通啊。