VB6 Timer (), Space () Form_Initialize () вызывает немедленный сбой - PullRequest
6 голосов
/ 13 декабря 2011

Создать новый проект VB6. Вставьте приведенный ниже код в код вашего проекта. Хит Беги. Посмотрите, не сработает ли ... Удалите или упростите все, что вам нравится в этом коде, и тогда все будет работать нормально. Кто-нибудь может пролить свет на то, почему это происходит?

До сих пор это тестировалось на восьми компьютерах, все из которых работают в различных комбинациях Windows XP, Windows Vista, Windows 7, Office 2010 и Office 2007. Те, где это было протестировано в Visual Basic IDE, имеют Visual Basic 6 SP 6 установлено.

Private Sub Sleep(ByVal nSeconds As Long)
    Dim nStart As Long: nStart = Timer
    Do
        DoEvents
    Loop Until (Timer - nStart) >= nSeconds
End Sub

Private Sub Crash()
    Dim sTempPath As String: sTempPath = Space(255)
End Sub

Private Sub Form_Initialize()
    Sleep 1
    Crash
End Sub


Приложение № 1:

Я поставил это как макрос в Excel 2010, заменив Form_Initialize() на Workbook_Open() и, конечно же, при открытии документа. Вылетает!

Приложение № 2:

Я добавил точки останова к каждой строке, прежде чем нажать «Выполнить», и она разбилась до того, как достигла первой точки останова. Но опять же, если я упростил или убрал что-то в этом, он работает нормально и не вылетает.

Приложение № 3:

Попробовал предложение MicSim об удалении двоеточия, и он не потерпел крах. Добавил его обратно, снова запустил, и он вылетел , а не . Закрыл Visual Basic, вставил оригинальный код, и он вылетел.

Приложение № 4:

Сведения о проблеме из Visual Basic 6 IDE:

Подпись проблемы:
Проблемное имя события: APPCRASH
Имя приложения: VB6.EXE
Версия приложения: 6.0.81.76
Временная метка приложения: 3592011f
Имя модуля неисправности: VBA6.dll
Версия модуля неисправности: 6.0.0.8169
Временная метка модуля неисправности: 358b0c74
Код исключения: c0000005
Смещение исключения: 00026329
Версия ОС: 6.1.7601.2.1.0.256.4
ID локали: 1033
Дополнительная информация 1: 7e3b
Дополнительная информация 2: 7e3beb1e9ccf6d519c5b994ca59a280f
Дополнительная информация 3: 7b83
Дополнительная информация 4: 7b833c57ebcf54809fd3aaccd8ea4f46

Прочитайте наше заявление о конфиденциальности онлайн:
http://go.microsoft.com/fwlink/?linkid=104288&clcid=0x0409

Если заявление о конфиденциальности в Интернете недоступно, ознакомьтесь с нашим заявлением о конфиденциальности в автономном режиме:
C: \ Windows \ system32 \ EN-US \ erofflps.txt

Приложение № 5:

Сведения о проблеме из Microsoft Excel 2010:

Подпись проблемы:
Название проблемного события: APPCRASH
Имя приложения: EXCEL.EXE
Версия приложения: 14.0.4756.1000
Временная метка приложения: 4b9c08e8
Имя модуля неисправности: VBE7.DLL
Версия модуля неисправности: 7.0.15.90
Временная метка модуля неисправности: 4b7b1248
Код исключения: c0000005
Смещение исключения: 00045b6a
Версия ОС: 6.1.7601.2.1.0.256.4
Код региона: 1033

Дополнительная информация о проблеме:
LCID: 1033
Skulcid: 1033

Прочитайте наше заявление о конфиденциальности онлайн:
http://go.microsoft.com/fwlink/?linkid=104288&clcid=0x0409

Если заявление о конфиденциальности в Интернете недоступно, ознакомьтесь с нашим заявлением о конфиденциальности в автономном режиме:
C: \ Windows \ system32 \ EN-US \ erofflps.txt

Screenshot after hitting Run, or Build

1 Ответ

5 голосов
/ 04 января 2012

Изучив ваш вопрос и все приложения, я понял, что на вашем компьютере установлена ​​версия VB6, а не SP6.

В ваших данных о сбое указаны следующие версии:

  • VB6.exe: 6.0.81.76
  • VBA6.dll: 6.0.0.8179

Точные номера сборки файлов Visual Basic 6.0 SP6 приведены ниже.:

  • VB6.exe: 6.0.97.82
  • VBA6.dll: 6.0.0.9782

Код исключения c0000005 соответствует нарушению доступа в модуле vba6.dll.Подобная проблема описана в Microsoft KB

. Я не нашел точных номеров сборок с исходным кодом для каждого пакета обновления VB6, но похоже, что это RTM-версия * 1026.*.Даже если вы установили SP6 самостоятельно, посторонний установщик мог перезаписать общие системные файлы более старой версией после установки пакета обновления.Это объяснило бы, почему многие пользователи отметили, что код работает для них с на вид схожей настройкой.

...