Member 14131979 Ответов: 1

Vb.net код пропуска строк


Привет, у меня проблема с vb. Программа пропускает строки кода.
Это работает в другой программе я сделал но в этой программе это не работает

Программа идет с "на ошибки.." напрямую "Дим ФРМ.." и затем "продолжить открытие"
Есть идеи?
On Error GoTo WriteError  

      If My.Settings.IsFirstRun Then
            Dim frm As New frmActivation
            frm.ShowDialog()
            My.Settings.IsFirstRun = False
        Else
            Dim sm As New SecurityManager
            If sm.CheckKey(frmActivation.PasswordDecrypt(tActivationKey, 
                              tEncryptionKey)) Then
            Else
                Dim frm As New frmActivation
                frm.ShowDialog()
            End If
        End If

       con.Open()
       ..


Что я уже пробовал:

Я попытался удалить обработчик ошибок.

RickZeeland

Вы уверены, что у вас есть настройки, определенные на вкладке "Проект - настройки"?

Member 14131979

Да. Дважды проверил. Удалил его и снова сказал это.

Richard MacCutchan

Шаг через код с помощью отладчика, чтобы вы могли видеть фактические значения всех переменных, на которые ссылаются в ваших операторах if.

Dave Kreskowiak

Это не пропуск строк кода. Это может выглядеть так, но это не так.

И почему, черт возьми, вы используете "On Error Goto" - это VB.NET приложение? Это старый способ VB6 или делать вещи, которые существуют только для обратной совместимости импортированного кода. Он не должен использоваться в новых разработках.

Отладчик покажет вам, что он не пропускает строки кода. Это покажет вам, что вы не понимаете, что делает код. Отладчик существует для того, чтобы отлаживать вас и показывать Вам, что происходит на самом деле.

CPallini

Вы использовали On Error GoTo заявление. Такой statememt пропускает строки кода всякий раз, когда возникает ошибка. То WriteError, чтобы почтить свое собственное имя, должен дать вам соответствующую информацию об ошибке.

cigwork

> Если см.CheckKey(frmActivation.PasswordDecrypt(tActivationKey, tEncryptionKey))

На основе фрагмента, показанного при любом запуске после FirstRun frmActivation будет null (nothing), когда будет выполнена строка выше. Учитывая это, я бы ожидал, что будет выброшено исключение нулевой ссылки. Это плюс доисторическая обработка ошибок goto, вероятно, даст интересные результаты.

Если код действительно переходит от попытки открыть диалоговое окно активации при первом запуске к открытию соединения, то это означает, что форма активации закрывается без какого-либо взаимодействия с пользователем, поэтому возникает условие ошибки в frmActivation, возможно, проглатывается исключение, в результате чего форма закрывается до того, как она имеет шанс что-либо отобразить.

1 Ответов

Рейтинг:
0

Doug- VisualBasic VB.NET

Я хотел бы использовать попробовать поймать итоге поймать на ошибке. Однако ошибка on не является проблемой, так как она выполняет con.open, а writeerror не предшествует этому.

Я бы предложил посмотреть на значение IsFirstRun в ваших настройках. Когда программа запускается, это "правда" ? Если вы меняете его во время пробега, устанавливаете ли вы его обратно перед выходом? Имеет ли он логический тип? Если нет, то вам придется сделать прямое сравнение со значением в настройках.

Если строка, то если My.Settings.Тогда IsFirstRun = "True"
Если целое число, то если My.Settings.IsFirstRun = 1 Тогда

Я бы предложил в событии form_load протестировать его с помощью msgbox(My.Settings.Свойство isfirstrun.метод toString) или отладки.печати(мой.Параметры.IsFirstRun.tostring) и посмотрите, с чем вы работаете.

Вы также можете поместить один из них перед собой, если хотите, чтобы увидеть, что у вас есть, чтобы вы знали ожидаемый результат.

debug.print(My.Settings.Свойство isfirstrun.метод toString)
Если Мои.Настройки.Свойство isfirstrun тогда