2015-08-20 7 views
0

Мне нужно использовать VB в рамках SSRS. Я пытаюсь украсить некоторые XPaths, чтобы сделать их более презентабельными для пользователя пользователя отчета. Я не зашел очень далеко, и я ударил по первой проблеме.Для каждого элемента цикла, не объявленного

Module VBModule 
    Public Function BeautifyXpath(ByVal s As String) As String 
     Dim strBuilder As New System.Text.StringBuilder(s) 
     If s.Contains("[") Then 
      strBuilder.Replace("[%s]", "") 
      strBuilder.Replace("@", "") 
      Dim tokens = strBuilder.ToString().Split("/") 
      For Each token In tokens 
       Console.WriteLine(token) 
      Next 
      Return strBuilder.ToString() 
     Else : Return s 
     End If 
    End Function 

    Sub Main() 
     Console.WriteLine(BeautifyXpath("/priorities/priority[%s]/@patternName")) 
    End Sub 
End Module 

Я получаю следующее сообщение об ошибке компилятора:

(8,24): ошибка VBNC30451: 'маркер' не объявлен. Он может быть недоступен из-за его уровня защиты.

+0

Включите опцию Strict On ... Затем ваши тусклые маркеры будут лаять, придайте ему тип. Например: Dim token As String() ... Затем в вашем цикле он знает, что его строка ... – Codexer

ответ

1

Вы должны объявить токен в своем заявлении For Each.

For Each token As String In tokens 
    Console.WriteLine(token) 
Next 

Или

Dim token As String() 
For Each token In tokens 
    Console.WriteLine(token) 
Next 

См MSDN для получения дополнительной информации.

+0

Вы также можете сделать это там, где объявлено перед циклом, где это должно быть сделано. – Codexer

+0

Да, я подумал об этом, но не написал его ... Я отредактировал свой ответ. Я смущен. Имеет ли маркер Dim как String() ... с или без()? – Mymozaaa

+1

Если вы посмотрите, что он разделяет строку на массив, то его оператор dim будет выглядеть так: 'Dim token As String()'. Затем в цикле вам не нужно говорить, какой тип ... – Codexer

Смежные вопросы