Функция LEN не возвращает значение в VB.NET - PullRequest
0 голосов
/ 20 декабря 2018

В следующем сегменте кода функция Strings.Len () пропускается или не возвращает значение, поскольку отладчик говорит, что переменная Test1 не назначена, а следующая строка с функцией Strings.InStr () работает правильно:

   sOPCTagItem = opcTagItem.Cells.Value --> assigns "DO1001_Inp_IOFault"    
   sBaseTagItemName = Left(sOPCTagItem, InStr(sOPCTagItem, "_") - 1) --> assigns "DO1001"

   iTest1 = Len(sOPCTagItem)  --> = nothing assigned
   iTest2 = InStr(sOPCTagItem, "_") --> = 7
   iTest1 = iTest1 - iTest2   --> = nothing assigned
   sBaseTagItemExtension = Right(sOPCTagItem, Len(sOPCTagItem) - InStr    (sOPCTagItem, "_"))   --> = nothing assigned

Ответы [ 2 ]

0 голосов
/ 20 декабря 2018

Странно, что они ничего не возвращают, поскольку их возвращаемое значение является целым числом.Я бы попробовал использовать правильный метод String.

    iTest1 = sOPCTagItem.Length
    iTest2 = sOPCTagItem.IndexOf("_")
    iTest1 = iTest1 - iTest2
    sBaseTagItemExtension = sOPCTagItem.Substring(sOPCTagItem.Length - sOPCTagItem.IndexOf("_"))
0 голосов
/ 20 декабря 2018

Оба эти метода работают для вашего сценария.Они будут зависеть от ваших входных данных и согласованности символов подчеркивания в ваших данных.

Возможно, вам просто не хватает Option Explicit On

Private Sub Button18_Click(sender As Object, e As EventArgs) Handles Button18.Click
    Debug.Print(getBaseTagItem("DO1001_Inp_IOFault"))
    Debug.Print(getBaseTagItemOldSchool("DO1001_Inp_IOFault"))
End Sub

Private Function getBaseTagItem(tagItem As String)

    Dim vals() As String = tagItem.Split("_"c)
    Return String.Concat(vals(1), "_", vals(2))

End Function

Private Function getBaseTagItemOldSchool(tagItem As String)

    Dim sOPCTagItem As String = tagItem
    Dim sBaseTagItemName As String = Strings.Left(sOPCTagItem, InStr(sOPCTagItem, "_") - 1)

    Dim iTest1 As Integer = Len(sOPCTagItem)
    Dim iTest2 As Integer = InStr(sOPCTagItem, "_")
    iTest1 = iTest1 - iTest2
    Dim sBaseTagItemExtension As String = Strings.Right(sOPCTagItem, Len(sOPCTagItem) - InStr(sOPCTagItem, "_"))
    Return sBaseTagItemExtension

End Function
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...