InstallPath用字符串直接取是乱码的,用二进制查看是正常的,请问这个应该怎么才能读到正常的字符串? 以下是我的代码.Function ToReg:string;
var
IeCache:array[0..1024] of char;
IeCacheLen:integer;
HK:HKEY;
s:string;
begin
Result := '';
IeCacheLen:=1024;
RegOpenKey(HKEY_LOCAL_MACHINE,'SOFTWARE\FairRain\Open\Setup',HK);
RegQueryValueEx(HK,PChar('InstallPath'),nil,nil,@IeCache,@ieCacheLen);
Result := Strpas(IeCache);
end;
var
IeCache:array[0..1024] of char;
IeCacheLen:integer;
HK:HKEY;
s:string;
begin
Result := '';
IeCacheLen:=1024;
RegOpenKey(HKEY_LOCAL_MACHINE,'SOFTWARE\FairRain\Open\Setup',HK);
RegQueryValueEx(HK,PChar('InstallPath'),nil,nil,@IeCache,@ieCacheLen);
Result := Strpas(IeCache);
end;
解决方案 »
- field ‘列名’not found
- delphi编程求救
- 一个Image控件的使用
- tiptcpserver问题
- 请教一下,如何判断SQLServer2000中数据库master是否存在某个存储过程?
- ActiveXForm 还是无法刷新?????大虾帮忙啊......(高分相送)
- 用WordApplication时怎样屏蔽掉Word的菜单,还有怎样控制word在Delphi中的Form中打开
- 请问有谁知道只封锁ctrl+alt+del的方法.
- 怎用使用 Indy 中的 base64 進行編碼
- 关于程序开发中,使用第三方控件的讨论
- delphi7,ACCESS数据库,使用DBGRID控件显示查询结果,但是结果中,文本类型的字段显示列宽太大,想要能根据字段大小调整字段
- 类似翻译软件取词是怎么实现的?
var
Reg: TRegistry;
P: PByte;
DataInfo: TRegDataInfo;
begin
Reg := TRegistry.Create;
Reg.RootKey := HKEY_LOCAL_MACHINE;
Reg.OpenKey('SOFTWARE\FairRain\Open\Setup', False);
try
Reg.GetDataInfo('InstallPath', DataInfo);
GetMem(P, DataInfo.DataSize);
Reg.ReadBinaryData('InstallPath', P^, DataInfo.DataSize);
Edit1.Text := PWideChar(P);
finally
FreeMem(P);
Reg.CloseKey;
Reg.Free;
end;
end;
var
IeCacheLen:integer;
HK:HKEY;
s:UTF8String;
begin
RegOpenKey(HKEY_LOCAL_MACHINE, 'SOFTWARE\FairRain\Open\Setup', HK);
RegQueryValueExW(HK, 'InstallPath', nil, nil, nil, @IeCacheLen);
SetLength(s, IeCacheLen);
RegQueryValueExW(HK, 'InstallPath', nil, nil, @s[1], @IeCacheLen);
RegCloseKey(HK);
Result:=s;