【发布时间】:2016-02-14 11:45:39
【问题描述】:
考虑以下 VBScript 示例,它从注册表中读取一个值并将相对路径字符串转换为绝对路径字符串:
On Error Resume Next
Set objShell = CreateObject("WScript.Shell")
strPath = Replace(objShell.RegRead(someRegKey),"\relative path","\\?\Absolute path",1,-1,1)
确定对RegRead() 的调用是否成功的最佳方法是什么?我知道如果注册表项不存在,RegRead() 将引发 Err。
- 在 VBScript 中,如果引发
Err,是否会跳过整行,或者内部调用是否会向外部Replace()函数返回 NULL 或一些未定义的值? - 如果是后者,
Replace()函数是否也会引发错误,还是只会返回 NULL 或其他什么? -
Err.Number是来自RegRead()调用还是Replace()调用的失败代码? -
strPath的值是多少?它是空字符串、未修改还是未定义? - 测试空字符串的最佳方法是什么?
If strPath = ""和IsEmpty(strPath)是等效的语句吗?
基本上,如果我在 VBScript 中使用这个结构,简单地检查 Err.Number 的值是否安全?还是我需要测试结果字符串?还是两者兼有?
我试图在我的代码中不要过于冗长,但从更广泛的意义上说,我想了解 VBScript 如何处理这些事情。
【问题讨论】:
-
整行将被跳过,没有什么可以阻止您将行分解为可管理的块并且仅使用
If Err.Number <> 0 Then检查objShell.RegRead(someRegKey)。但是,请考虑使用 @Ansgar's approach 以获得更强大的解决方案。
标签: string replace vbscript registry