0 / 0 / 0
Регистрация: 17.01.2015
Сообщений: 36
1

"System.InvalidCastException" в Microsoft.VisualBasic.dll при парсинге

19.01.2015, 15:22. Показов 1662. Ответов 2
Метки нет (Все метки)

Здравствуйте. Вот мой код
VB.NET
1
2
3
4
5
6
7
8
9
10
11
12
Dim Mass(PARS.Count(ALL, "<item>", "</item>") - 1) As String
        For i = 0 To Mass.Length - 1 Step 1
            Mass(i) = PARS.GetPars(ALL, "<item>", "</item>", i)
        Next
        Dim Kolichestvo As Integer = ListBox1.Items.Count
        For l = 0 To Kolichestvo - 1 Step 1
            For m = 0 To Mass.Length - 1 Step 1
                If Regex.Match(Mass(m), "/\[CDATA\[(.*?)\]/") = ListBox1.Items(0) Then
                    SendMsg(ListBox1.Items(l) + " - NEW", Form2.TextBox1.Text, Form2.TextBox2.Text, Form2.TextBox3.Text, Form2.TextBox5.Text)
                End If
            Next
        Next
При дебаге ссылается на мое условие
VB.NET
1
2
3
                If Regex.Match(Mass(m), "/\[CDATA\[(.*?)\]/") = ListBox1.Items(0) Then
                    SendMsg(ListBox1.Items(l) + " - NEW", Form2.TextBox1.Text, Form2.TextBox2.Text, Form2.TextBox3.Text, Form2.TextBox5.Text)
                End If
и выдает ошибку
Необработанное исключение типа "System.InvalidCastException" в Microsoft.VisualBasic.dll

Дополнительные сведения: Сбой при разрешении перегрузки: ни один Public "=" нельзя вызвать с данными аргументами:
'Public Shared Operator =(a As String, b As String) As Boolean':

Соответствующий параметру "a" аргумент нельзя преобразовать из "Match" в "String".

Я так понял регулярку в строку не может преобразовть, как это можно сделать?

Я скорее всего просто неправильно регулярку составил. У меня из опреденного набора символов, вытаскивает нужные. И эти нужные символы уже сравнивает с итемом в листбоксе.
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
19.01.2015, 15:22
Ответы с готовыми решениями:

Необработанное исключение типа "System.InvalidCastException" в Microsoft.VisualBasic.dll Дополнительные сведе
Dim a, b, eps As Double Dim z, z1 As String z = &quot;&quot; z1 = &quot;&quot; a =...

Необработанное исключение типа "System.IO.IOException" в Microsoft.VisualBasic.dll
Здравствуйте! Изучаю функции в Basic, и столкнулся с такой проблемой: при запуске данного...

Вылезает ошибка при отправке пакета: "A first chance exception of type 'System.Net.WebException' occurred in System.dll"
Код выглядит так. Function getsid(login As String, password As String) As String Dim...

После компиляции и при запуска приложения ошибка: System.InvalidCastException: Приведение строки "
Доброго всем времени суток! После компиляции и при запуска приложения получаю окно с такой...

2
COM‐пропагандист
757 / 714 / 139
Регистрация: 18.12.2014
Сообщений: 1,977
Записей в блоге: 4
22.01.2015, 21:40 2
Что-то в этом роде?
VB.NET
1
2
3
4
      For Each m As Match In Regex.Matches(input, pattern)
         Console.WriteLine("'{0}' found at index {1}.", 
                           m.Value, m.Index)
      Next
0
Администратор
Эксперт .NET
15390 / 12398 / 4939
Регистрация: 17.03.2014
Сообщений: 25,140
Записей в блоге: 1
23.01.2015, 08:57 3
BigProfessor, с регуляркой всё нормально. Метод Match возвращает объект типа Match который включает коллекцию совпадений и признак было ли совпадение вообще. Странно ожидать от него просто строку. На самом деле тебе нужно значение для первой найденной группы. Ведь именно для этого ты поставил круглые скобки в регулярке. Перепиши код так:
VB.NET
1
2
Dim mtch As Match = Regex.Match(Mass(m), "/\[CDATA\[(.*?)\]/")
If mtch.Success And mtch.Groups(1).Value = ListBox1.Items(0) Then
P.S. Парсить XML регулярками плохая идея. Лучше использовать XmlDocument или LINQ to XML т.к. ты получишь более надежный код.
0
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
23.01.2015, 08:57
Помогаю со студенческими работами здесь

"Не удалось привести тип объекта "System.Int32" к типу "System.String"."
Добрый день! Делаю запрос к локальной базе данных. Пытаюсь получить последнюю строку. Но что-то...

"Text", импортированный из пространств имен или типов "System, System.Drawing", является неоднозначным
В Visual Studio 2010 при обработке строки с текстом появляется такая ошибка: &quot;Text&quot;,...

Как в своей DLL использовать функции из Microsoft.VisualBasic
Доброго времени суток! Создаю свою Dll и столкнулся с проблемой: не поддерживаются многие...

Запуск функций из DLL - Необработанное исключение типа "System.AccessViolationException" в WindowsApplication1
Здравия всем! Сможет ли кто-нить объяснить нубу, как запустить этот код из VB6 Option Explicit...

Оператор "+" для типов "String" и "System.Windows.Forms.ComboBox.ObjectCollection" не определен
Доброго времени суток,подскажите решение проблемы К комбобоксам привязал БД отображаются в них...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
3
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2023, CyberForum.ru