0

以下のコード:

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 ドライブからデータを取得しているようです。

わからないことが二つ。

  1. 最初の一連の引用符の間でデータを変更すると、行objWriter.Write("Active: {0} ", queryObj("Active"))は機能しません。したがって、Active: {0}Active: {1}に変更すると、Try Catch がキャッチしないエラーが発生します (これは、...next は try catch にあります)。引用符内のものは単なるテキストであり、何にでも変更できると思いましたか? try catch がそれをキャッチしないのはなぜですか?

  2. USB 外付けドライブを接続しても読み取れません。それが、上記の項目 1 について知った方法です... {0} を {1} に変更したところ、クラッシュしました。

4

1 に答える 1

0

#2を支援するために、さらにコードを投稿する必要があります。たとえば、どのようsearcherに定義されていますか。

しかし、最初の質問は非常に単純です。文字列{0}は標準の置換構文です。代わりにこれを書いた場合:

objWriter.Write("Hello {0}, my name is {1}", "Alice", "Bob")

それは次のように書きます:

Hello Alice, my name is Bob

{0}、最初の文字列の後の最初の項目を表します (プログラミングでは、数値は 0 から始まるため、最初は 0、2 番目は 1 など)。あなたの場合、返さ{0}れるものに置き換えられていqueryObj("Active")ます。

{X}それらをバックアップする値がある限り、通常、必要な数だけ持つことができます。より多くの値を持っていても問題ありませんが、少なすぎるとエラーが発生します。

最後の 1 つ ("Bob") は単に無視されるため、これは問題ありません。

objWriter.Write("Hello {0}", "Alice", "Bob")

しかし、これは大丈夫ではありません。記入するものが何もないからです。{1}

objWriter.Write("Hello {0}, my name is {1}", "Alice")
于 2011-07-29T20:28:52.477 に答える