以下代码:
For Each queryObj As ManagementObject In searcher.Get()
objWriter = New StreamWriter("C:\vsl\scripts\results.txt", False)
objWriter.Write("Active: {0} ", queryObj("Active"))
objWriter.Write(" InstanceName: {0} ", queryObj("InstanceName"))
objWriter.Write(" PredictFailure: {0} ", queryObj("PredictFailure"))
objWriter.Write(" Reason: {0} ", queryObj("Reason"))
objWriter.Close()
Next
似乎从我唯一的内部IDE驱动器中获取数据。
我不明白的两件事。
如果更改第一组引号之间的数据, objWriter.Write(“Active:{0}”,queryObj(“Active”))行不起作用。因此,将有效:{0} 更改为有效:{1} 会导致Try Catch无法捕获的错误(这对于...下一步是在try catch中)。我假设引号内的东西只是文字,可以改成什么?为什么捕捉不到它?
连接时未读取USB外置驱动器。这就是我发现上面第1项的方法......我将{0}更改为{1}并且崩溃了。
答案 0 :(得分:0)
您需要发布更多代码来帮助我们使用#2,例如searcher
的定义方式。
但你的第一个问题很简单。字符串{0}
是标准替换语法。如果你写了这个:
objWriter.Write("Hello {0}, my name is {1}", "Alice", "Bob")
它会写出:
Hello Alice, my name is Bob
{0}
表示初始字符串后的第一个项目(编程编号从零开始,因此第一个为零,第二个为1,等等)。在您的情况下,{0}
将被queryObj("Active")
返回所取代。
只要您有值备份它们,您通常可以拥有任意数量{X}
。拥有更多的值是可以的,因为你遇到的错误太少了。
所以这没关系,因为最后一个(“Bob”)被忽略了:
objWriter.Write("Hello {0}", "Alice", "Bob")
但这不合适,因为{1}
objWriter.Write("Hello {0}, my name is {1}", "Alice")