Недопустимо преобразование из строки в тип Integer

#vb.net

#vb.net

Вопрос:

В моем приложении есть приведенный ниже код… Ничто не объявлено как целое число, поэтому я не понимаю или не вижу, в чем может быть проблема… Это говорит:

Недопустимо преобразование из строки «9838 Co Rd 47» в тип ‘Integer’.

Адрес проходит через всю функцию в виде строки единственное место, где, я думаю, это может быть как-то изменено, — это вызов функции… Ниже приведена функция, которая выдает исключение. За которым следует функция, которая возвращает адрес… Ошибка исходит из строки _holder = item.bill_to.remove (адрес)

   For Each item In _QuickImport
            Dim BusinessName As String = Nothing
            Dim CustomerName As String = " "
            _Id = item.id
            If Not String.IsNullOrEmpty(item.Customer) Then
                Dim _holder As String = String.Empty
                Dim _contact_ As String = item.Contact
                Dim _address_ As String = String.Empty

                If item.Bill_to.Contains(_contact_) Then
                    _holder = item.Bill_to.Replace(_contact_, " ")
                End If
                If Not String.IsNullOrEmpty(_holder) Then
                    If item.Bill_to.Contains("Co Rd") Then
                        _address_ = ExtractAddressWithCoRd(_holder)
                    End If
                Else
                    If item.Bill_to.Contains("Co Rd") Then
                        _address_ = ExtractAddressWithCoRd(item.Bill_to)
                    End If
                End If

                If Not String.IsNullOrWhiteSpace(item.Customer) Then
                    If item.Customer.Contains(":") Then
                        BusinessName = item.Customer.Split(":")(0)
                        CustomerName = item.Customer.Split(":")(1)
                    Else
                        CustomerName = item.Customer
                    End If
                End If


                If Not String.IsNullOrEmpty(BusinessName) Then
                    If item.Bill_to.Contains(BusinessName) Then
                        _holder = item.Bill_to.Replace(BusinessName, " ")
                    End If
                End If



                Dim _Id_ As Integer = _Id

                If Not String.IsNullOrWhiteSpace(_holder) Then
                    Dim _check As Boolean = True
                    _check = ValidZip(_holder)
                    If _check = True Then
                        If Not String.IsNullOrEmpty(_address_) Then
                            _holder = Convert.ToString(_holder)
                            _address_ = Convert.ToString(_address_)
                            _holder = item.Bill_to.Remove(_address_)
                        End If
                        parseAddress(_holder, _Id)
  

Другая функция:

     Private Function ExtractAddressWithCoRd(ByVal input As String) As String
        Dim add1 As String = String.Empty
        Dim add2 As String = String.Empty
        Dim parts() As String = input.Split(" "c)
        For i As Integer = 0 To parts.Length - 1
            If parts(i) = "Co" AndAlso i > 0 Then
                add1 = parts(i - 1)
            ElseIf parts(i) = "Rd" AndAlso i < parts.Length - 1 Then
                add2 = parts(i   1)
            End If
        Next

        Return add1   " Co Rd "   add2
    End Function
  

Я думаю, что здесь что-то меняется на целочисленное значение… но все это также объявлено как строка…

Есть идеи????

Ответ №1:

Я думаю, что здесь что-то меняется на целочисленное значение…

Нет, дело не в этом. Прочитайте сообщение об ошибке еще раз:

Недопустимо преобразование из строки «9838 Co Rd 47» в тип ‘Integer’.

«Преобразование из строки» означает, что ваша _address_ переменная действительно является строкой, и ее значение даже отображается («9838 Co Rd 47»).

Он пытается преобразовать эту строку в целое число, потому что item.Bill_to является String и String.Remove ожидает целочисленный аргумент (позиция, из которой нужно удалить символы), но вместо этого вы передаете строку. То, что вы ищете, String.Replace , которое вы уже используете в другом месте:

 _holder = item.Bill_to.Replace(_address_, "")
  

Комментарии:

1. Хороший материал… Я думал, что это может быть так, но он подумал, что я использовал remove где-то еще подобным образом…. Большое спасибо за помощь…

Ответ №2:

Вы используете строгие параметры? Возможно, в вашем возврате вам следует использовать

 Return add1 amp; " Co Rd " amp; add2
  

Поскольку add1 выглядит как 9838?