大家来看看是什么问题?

flashwolf 2002-01-29 08:06:40
用delphi编了个注册表的修改工具。但在有的机上运行时会出现如下错误窗口。

access violation at address 004039ba in modle 'myregedit.exe',read of address 0000001e

但有的机子可以正常使用。
...全文
61 4 打赏 收藏 转发到动态 举报
写回复
用AI写文章
4 条回复
切换为时间正序
请发表友善的回复…
发表回复
VSaber 2002-01-29
  • 打赏
  • 举报
回复
典型的内存访问错误
单步走一下吧!
看看哪据出错!
flashwolf 2002-01-29
  • 打赏
  • 举报
回复
var
frmreg: Tfrmreg;
Getregname: array[0..30] of string;
Getregdata: array[0..30] of string;
program_amount: integer;
....................


function Tfrmreg.RegReadString(const Root: HWND; key: string; name: string): string; //读注册表
var
reg: TRegistry;
ts: TStrings;
i: integer;
begin
reg := TRegistry.Create;
reg.RootKey := Root;
reg.LazyWrite := false;
reg.OpenKey(key, false);
ts := TStringList.Create;
reg.GetValueNames(ts);
program_amount := ts.Count;
for i := 0 to ts.Count - 1 do
begin
Getregname[i] := ts.Strings[i]; //取程序名
if (reg.GetDataType(Getregname[i]) = rdString) or (reg.GetDataType(Getregname[i]) = rdExpandString) then //判断键值类型
Getregdata[i] := reg.ReadString(ts.Strings[i]); //取程序地址
if trim(Getregname[i]) = trim(name) then result := Getregdata[i];

if (reg.GetDataType(Getregname[i]) = rdInteger) then
Getregdata[i] := inttostr(reg.Readinteger(ts.Strings[i]));
if trim(Getregname[i]) = trim(name) then result := Getregdata[i];

end;
ts.Free;
reg.CloseKey;
reg.free;
end;
王集鹄 2002-01-29
  • 打赏
  • 举报
回复
我已经看了你的代码
可以你应该把出错的位置告诉大家
还有其他有几个变量是怎么声明的
cszhz 2002-01-29
  • 打赏
  • 举报
回复
仔细看程序吧,是代码的问题!

828

社区成员

发帖
与我相关
我的任务
社区描述
Delphi 非技术区
社区管理员
  • 非技术区社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧