0

ディレクトリの文字列配列の解析に問題があります。最終的な目標は、[global] .MyDataDir& "\ saved"に関連付けられたパスを照会して、このディレクトリ内のすべてのフォルダーを取得することです。ただし、実際のフォルダ名、最後のindexof "\"の後のテキストの最後のビットには、プラグインの名前が含まれています。プラグインの列挙リストと比較して、ここでは取り上げない機能を追加します。ここでの問題は、コードの最後のビットが機能しないことです。Dim foldername as String =(etc ...)、インデックスと長さが文字列内の場所を参照する必要があるというエラーを返します。パラメータ名:長さ。

ウィザードの誰かが、ここで私を助けてくれますか?とても有難い。

Dim dirList As String() = System.IO.Directory.GetDirectories([global].MyDataDir & "\saved")
For dir As Integer = 0 To dirList.Length - 1
    If IO.Directory.GetFiles(dirList(dir)).Length > 0 Then
        For Each file As String In IO.Directory.GetFiles(dirList(dir))

            Dim folderName As String = dirList(dir).ToString.Substring(dirList(dir).ToString.LastIndexOf("\"), dirList(dir).ToString.Length - 1)

        Next
    End If
Next

センパーフィ

4

2 に答える 2

3

代わりに System.IO.Path.GetDirectoryName() を使用してください。

次回は、VB.NET の Left() 便利な関数を使用して、これを間違えないようにします。

于 2012-08-17T01:25:25.333 に答える
0

理由がわかりました…。

問題は、サブストリングの引数(開始インデックス、開始インデックスからのコピーの長さ)にあります。長さの引数は、長さを計算するときに文字列全体を考慮に入れるという印象を受けました。代わりに、この関数の2番目の引数は、文字列全体ではなく、最初の引数の結果に基づいて機能します。したがって、文字列の長さは、実際には、インデックスを作成した後に存在する長さよりもはるかに長くなります。

助けてくれてありがとう。

于 2012-08-17T13:19:48.107 に答える