Непонятная ошибка (программа вылетает при вызове функции)

Язык Visual Basic на платформе .NET.

Модераторы: Ramzes, Sebas

Vladlex
Начинающий
Начинающий
 
Сообщения: 20
Зарегистрирован: 12.02.2008 (Вт) 16:01
Откуда: Владивосток

Непонятная ошибка (программа вылетает при вызове функции)

Сообщение Vladlex » 19.03.2010 (Пт) 14:58

Лирика - давно не находился в таком отчаянном положении. Программа нормально работает у меня, но страдает при переносе на другие компы.
Конкретика:

есть модуль main(), который грузит функцию opencfg(имя файла как строка). И при вызове этой функции вылетает. Дальнейшие операции я проделывал, кидая экзешник на виртуальную машину (ставя в нужных местах для проверки в коде порграммы msgbox'ы, поскольку, повторюсь, у меня все работает отлично).
Собственно, opencfg получает имя файла и должен с ним проделывать считывание, что реализовано в еще одной функции. Хинт в том, что в модуле main сразу перед вызовом opencfg() стоит msgbox и он срабатывает. А внутри этой функции первой строкой же стоит другой msgbox и он молчит, т.е., программа вылетает до него. Естественно, я проверил получаемую функцией строку - она нормальна. Более того, вызов функции opencfg идет только в случае, если файл существует (через my.computer....fileexist), который в качестве аргумента так же имеет строку. Иными словами, строка является абсолютно нормальной.

В программе существуют похожие функции, например, за несколько строк до opencfg() идет аналогичная по строению LoadMainFCG(), использующая в качестве аргумента имя файла. Срабатывает на ура.

В чем может быть проблема? Ну, то есть, понятно, что в моих кривых руках, но хотелось бы конкретики (я не имею ввиду угол кривизны и место произрастания).
Собственно, проект пишу для себя, поэтому меня не подгоняют никакие строки, а просто гложет любопытство - почему так?! =)

Собственно, код:

Код: Выделить всё
Sub main()
...
If LoadLastFile = True Then
msgbox ("tryload")
                If My.Computer.FileSystem.FileExists(lastfile) Then opencfg(lastfile)
            End If
...
End sub



Sub opencfg(ByVal fname As String)
msgbox ("Процедура вызвана")
        Dim cfg() As String = Split(gettextfromfile(fname), vbCrLf)
        For i = 0 To UBound(cfg)
...
End sub



msgbox ("tryload") - срабатывает
msgbox ("Процедура вызвана") - нет
Человек - дитя препятствий. Блан де Сент-Бонне.

iGrok
Артефакт VBStreets
Артефакт VBStreets
 
Сообщения: 4272
Зарегистрирован: 10.05.2007 (Чт) 16:11
Откуда: Сетевое сознание

Re: Непонятная ошибка (программа вылетает при вызове функции)

Сообщение iGrok » 19.03.2010 (Пт) 15:11

Я, конечно, могу и ошибаться... Но что, собственно, говорит My.Computer.FileSystem.FileExists(lastfile) ?
Т.е. так:
Код: Выделить всё
If My.Computer.FileSystem.FileExists(lastfile) Then
    msgbox ("А файл, похоже, существует..")
    opencfg(lastfile)
End If
label:
cli
jmp label

MIT
Мега гуру
Мега гуру
Аватара пользователя
 
Сообщения: 2211
Зарегистрирован: 17.09.2006 (Вс) 22:46

Re: Непонятная ошибка (программа вылетает при вызове функции)

Сообщение MIT » 19.03.2010 (Пт) 15:15

Думается мне, что управление просто не переходит к процедуре. Замени
Код: Выделить всё
If My.Computer.FileSystem.FileExists(lastfile) Then opencfg(lastfile)
на
Код: Выделить всё
If My.Computer.FileSystem.FileExists(lastfile) Then
opencfg(lastfile)
End If
Поставь бряк на строку opencfg(lastfile)


Опередили :)
Изображение
You can change your face, but can`t change your mind. No matter what you do.
Создайте еще более понятный интерфейс и мир создаст еще более тупого юзера. (с) Баш

Vladlex
Начинающий
Начинающий
 
Сообщения: 20
Зарегистрирован: 12.02.2008 (Вт) 16:01
Откуда: Владивосток

Re: Непонятная ошибка (программа вылетает при вызове функции)

Сообщение Vladlex » 19.03.2010 (Пт) 15:46

Код: Выделить всё
If My.Computer.FileSystem.FileExists(lastfile) Then

аналогична
Код: Выделить всё
If My.Computer.FileSystem.FileExists(lastfile) = true Then


Еще до того, как вы спросили было так:
Код: Выделить всё
     If My.Computer.FileSystem.FileExists(lastfile) Then MsgBox(lastfile)
                If My.Computer.FileSystem.FileExists(lastfile) Then opencfg(lastfile)

Выдавался msgbox, а затем ошибка и программа вылетала

Проблема, судя по всему, заключается в неустановленном Framework 3.5.
Причина так думать: задолбавшись искать ошибку по мессагам начал ставить на виртуальную машину Professional 2008. Еще в процессе установки ее решил еще раз протестить программу и она запустилась. Поскольку ход установки отображается - увидел, что на данный момент были установлены Фреймвок 3.5, языковой пакет, средство web-авторизации и еще что-то. На тот момент устанавливался сам visual studio 2008. За сим тему можно закрыть, хотя непонятки остались. Но поскольку проект личный - то и дрючить себя за ненайденные ошибки в случае таковых (а их там уйма, я быдлокодер) придется мне же )))
Человек - дитя препятствий. Блан де Сент-Бонне.

MIT
Мега гуру
Мега гуру
Аватара пользователя
 
Сообщения: 2211
Зарегистрирован: 17.09.2006 (Вс) 22:46

Re: Непонятная ошибка (программа вылетает при вызове функции)

Сообщение MIT » 19.03.2010 (Пт) 15:51

Дело не в аналогичности а в том — инлайновая контсрукция или нет.
Можешь заменить своё My.Computer.FileSystem.FileExists на System.IO.File.Exists, вдруг поможет.
Изображение
You can change your face, but can`t change your mind. No matter what you do.
Создайте еще более понятный интерфейс и мир создаст еще более тупого юзера. (с) Баш

Vladlex
Начинающий
Начинающий
 
Сообщения: 20
Зарегистрирован: 12.02.2008 (Вт) 16:01
Откуда: Владивосток

Re: Непонятная ошибка (программа вылетает при вызове функции)

Сообщение Vladlex » 19.03.2010 (Пт) 15:57

Попробую, спасибо.
Но My.Computer использовался в процедуре, запрашивающей другой файл до этого.
Файл проверялся на существование, читался (процедурой очень похожей на пресловутый opencfg), откуда бралось значение lastfile в т.ч.

Но, все равно, еще раз спасибо, на всякий случай попробую, чем черт не шутит.
Человек - дитя препятствий. Блан де Сент-Бонне.


Вернуться в Visual Basic .NET

Кто сейчас на конференции

Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 3

    TopList