Форум программистов, компьютерный форум, киберфорум
Visual Basic
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.50/8: Рейтинг темы: голосов - 8, средняя оценка - 4.50
0 / 0 / 0
Регистрация: 26.01.2012
Сообщений: 9
1

Проблема с компиляцией. На одних машинах работает на др. нет

13.02.2012, 10:38. Показов 1544. Ответов 12
Метки нет (Все метки)

Author24 — интернет-сервис помощи студентам
Сделал проект. С помощью "Ghost Installer Studio" сделал установочный файл. В офисе нашим поставил всем (у всех Win XP). Столкнулся что у некоторых работает а у других нет. Ошибку выдает при выводе данных из базы "error '9' Subscript out of range". Подскажите пожалуста из-за чего может такое быть. Service Pack 2 влияет, на некоторых стоит а на некоторых только SP 1, но это не те машины? Хоть в каком направлении рыть?
0
Programming
Эксперт
39485 / 9562 / 3019
Регистрация: 12.04.2006
Сообщений: 41,671
Блог
13.02.2012, 10:38
Ответы с готовыми решениями:

Почему в одних IDE код работает, а в других нет? (Visual Studio vs DevC++)
Есть простой код, который находит максимальное значение в массиве. Но есть странность одна: 1)На Visual Studio программа работает...

Проблема с компиляцией
Приветствую У меня такая проблема при создании своей игры я смотрел много уроков, читал много форумов и везде при компиляции игры на...

ПРоблема с компиляцией
Дело такое, при запуске программы в режиме отладки программа работает отлично, как задумано. но если эту же программу запустить вне делфи,...

12
Silver
13.02.2012, 11:07 2
Даже при использовании инсталлятора некоторые библиотеки (*.DLL,*.OCX)
могут не попасть в дистрибутив. Нужно все просмотреть и добавить
руками в проект инсталлятора.
2 / 2 / 1
Регистрация: 18.10.2007
Сообщений: 1,748
13.02.2012, 11:21 3

Нет, проблема явно не в компонентах
Посмотрите на описание ошибки - "error '9' Subscript out of range".
Такая ошибка, как и написано, возникает при выходе за границы чего-либо (обычно массива). Т.е. Если у нас есть массив из 5 элемнетов, а мы обратимся к шестому, то выведется именно эта ошибка. Так что колупай код. Это ошибка именно в коде, компоненты тут совсем непричем.
0
Silver
13.02.2012, 12:17 4
2Spirin : Вот тут ты не прав!
С таким явлением я сталкивался несколько раз.
Причиной являлось отсутствие некоторых библиотек.
Почему работает на других компах?
Потому, что там эти модули были установлены другими программами.
Ну посуди сам, программа одна и та же!
Ведь не может же быть, что при инсталляции размер массива становится
разным? Это нонсенс!
2 / 2 / 1
Регистрация: 18.10.2007
Сообщений: 1,748
13.02.2012, 12:25 5
Нет, компоненты тут совсем непричем.
КОненчо, если они создаются динамически в цикле (массив компонентов), при этом их нет и стоит On Error, то такое возможно по причине отсутствия компонентов (т.к. происходит ошибка при создании, но она проглатывается, а счетчик какой-нибудь считает, что уомпонент создан нормлаьно). Но только в том случае.
Проблемма именно за выход за границы множества. Причин может быть много. Но если это связано с отсутствием компонентов, как я описал выше, то это чисто программерская ошибка. По поводу "посуди сам, программа одна и та же"... Ты ошибаешься) Я раньше верил в то, что если программа стабильно работате год, то оона продолжит дальше также стабильно работать. А зря. Опыт показывает, что программы иногда "устают" и "уходят в отпуск".
0
Silver
13.02.2012, 12:54 6
программы иногда "устают" и "уходят в отпуск".
Это случается когда к ним прикладываются шаловливые ручки продвинутых
юзеров и псевдоадминистраторов.
2 / 2 / 1
Регистрация: 18.10.2007
Сообщений: 1,748
13.02.2012, 12:58 7
Согласен, но бываеют и неучтенные ошибки.
К примеру, переполнение счетчика.
0
0 / 0 / 0
Регистрация: 04.03.2008
Сообщений: 250
13.02.2012, 14:07 8
Может быть, стоит вручную установить Option Base в модулях, где встречаются массивы, чтобы исключить неверное понимание разными средами, с чего начинать отсчет, с нуля или единицы.
0
Comanche
13.02.2012, 14:41 9
Вот пример ситуации, когда отсутствие на компе какой-либо компоненты вызовет 9-ю ошибку:
Visual Basic
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
Option Explicit
 
Private Const OBJ_COUNT As Integer = 3
Private ObjArr() As Object
 
Private Sub Form_Load()
  Call FillObjectArray
  Call EnumerateObjects
End Sub
 
Sub EnumerateObjects()
  Dim i As Integer
  
  For i = 1 To OBJ_COUNT
    Debug.Print ObjArr(i).Language
  Next
End Sub
 
Sub FillObjectArray()
  Dim MyObj As Object
  Dim i As Integer
  
  On Error Resume Next
  For i = 1 To OBJ_COUNT
    Set MyObj = CreateObject("ScriptControl1")
    If Err = 0 Then
      ReDim Preserve ObjArr(1 To i)
      Set ObjArr(i) = MyObj
      ObjArr(i).Language = "VBScript"
    End If
  Next
End Sub
Надо так:
Visual Basic
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
Option Explicit
 
Private Const OBJ_COUNT As Integer = 3
Private ObjArr() As Object
 
Private Sub Form_Load()
  If FillObjectArray() Then
    Call EnumerateObjects
  Else
    MsgBox "Failed to create array of objects!", vbCritical, "Error"
  End If
End Sub
 
Sub EnumerateObjects()
  Dim i As Integer
  
  For i = 1 To OBJ_COUNT
    Debug.Print ObjArr(i).Language
  Next
End Sub
 
Function FillObjectArray() As Boolean
  Dim MyObj As Object
  Dim i As Integer
  
  FillObjectArray = True
  
  On Error Resume Next
  For i = 1 To OBJ_COUNT
    Set MyObj = CreateObject("ScriptControl1")
    If Err = 0 Then
      ReDim Preserve ObjArr(1 To i)
      Set ObjArr(i) = MyObj
      ObjArr(i).Language = "VBScript"
    Else
      FillObjectArray = False
    End If
  Next
End Function
Понятно, что отсутствие компоненты - лишь косвенная причина ошибки. А прямая причина - кривые руки
2 / 2 / 1
Регистрация: 18.10.2007
Сообщений: 1,748
13.02.2012, 14:56 10
Вот-вот. О чем я и писал 5 сообщений назад
0
0 / 0 / 0
Регистрация: 26.01.2012
Сообщений: 9
14.02.2012, 06:09  [ТС] 11
Удивительно, но все решилось проще.

я на той машине установил VB, и открыл проект. И посморел на что ругается - "Debug". Оказывается некоторые машины ругались на:
Visual Basic
1
Private Sub DataGrid1_RowColChange(LastRow As Variant, ByVal LastCol As Integer)
изменил на:
Visual Basic
1
Private Sub DataGrid1_Click()
и теперь работает. что за глюк я так и не пнял.
0
Comanche
14.02.2012, 09:45 12
Цитата Сообщение от ralex81
изменил на:

Private Sub DataGrid1_Click()

и теперь работает...
Я с тебя офигеваю! А чё ж не изменил на ListView1_ItemCheck, к примеру?! )
Нет бы разобраться в причине! посмотреть хелп на компоненту, убедиться, что первому аргументу ByVal действительно не нужен...
2 / 2 / 1
Регистрация: 18.10.2007
Сообщений: 1,748
14.02.2012, 10:27 13
))))))))))))))))))
Команч, 5 баллов! )
2ralex81: Код события в студию!
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
inter-admin
Эксперт
29715 / 6470 / 2152
Регистрация: 06.03.2009
Сообщений: 28,500
Блог
14.02.2012, 10:27
Помогаю со студенческими работами здесь

Проблема с компиляцией
Привет, решил изучать Python и столкнулся с проблемой. С помощью pyinstaller сделал .exe файл и когда его запускаю и ввожу всё что надо...

Проблема с компиляцией
Проблема: не получается устранить синтаксическую ошибку. Помогите сделать так, чтобы программа компилировалась (устранить синтаксическую...

Проблема с компиляцией...
Скачал INN с ftp://ftp.isc.org/isc/inn/inn-2.4.6.tar.gz 1. Распаковал. 2. Начал конфигурировать ./configure 2.1. или просто с...

Проблема с компиляцией (help)
установил С++ 6.0 , но что то проблемный какой то jmu debug > go (v otvet ) this file does not exist. yes want to build it > file not...

Проблема с компиляцией
Сегодня начал изучать C++ Скачал инсталлятор MinGW отсюда: ...


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

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

Редактор формул (кликните на картинку в правом углу, чтобы закрыть)
Новые блоги и статьи
Что нового в C# 14
UnmanagedCoder 10.03.2025
Предстоящая версия C# 14 обещает принести изменения, которые сделают разработку еще более приятной и эффективной. Что стоит отметить, так это влияние сообщества разработчиков на формирование новых. . .
Формулы поворота
Igor3D 10.03.2025
Добрый день Тема Эти формулы приводятся во множестве тьюториалов, часто под видом "матрица вращения на плоскости". x' = x * cos(a) - y * sin(a) y' = y * cos(a) + x * sin(a) Как бы Вы их. . .
Что нового в .NET 10
UnmanagedCoder 10.03.2025
. NET 10 выходит как релиз с длительной поддержкой (LTS), включающей три года обновлений. В этом обновлении Microsoft сфокусировались на нескольких направлениях: производительность, оптимизация. . .
Отложенное высвобождение, RCU и Hazard Pointer в C++26
NullReferenced 09.03.2025
Многопоточное программирование стало важной частью современной разработки. Когда несколько потоков одновременно работают с общими данными, возникает целый ряд проблем, связанных с синхронизацией и. . .
Неблокирующийся стек на C++26
NullReferenced 09.03.2025
Традиционные способы синхронизации в многопоточном программировании — мьютексы, семафоры, условные переменные — часто превращаются в узкое место в плане производительности. При этом неблокирующиеся. . .
Обработка строк в C++26: Новые возможности string и string_view
NullReferenced 09.03.2025
Новый стандарт C++26 предлагает много улучшений для работы с привычными string и относительно новыми string_view. string_view - это невладеющая ссылка на последовательность символов, появившаяся в. . .
Мой первый аддон для Blender 3D, с помощью нейронки (не зная даже азов пайтона, но это не значит что так и с остальным).
Hrethgir 09.03.2025
Потратил весь день. Пол-дня мне хватило, чтобы понять что с версией с 14B мне не одолеть написание функционального кода, на языке с которым я вообще никак не знаком - пайтон. Версия 22B от другого. . .
Einstein@Home сегодня исполняется двадцать лет!
Programma_Boinc 09.03.2025
Einstein@Home сегодня исполняется двадцать лет! Отправлено 19 февраля 2025 года в 17:20:21 UTC Я хочу поздравить всех наших волонтеров, разработчиков и ученых из Einstein@Home. Мы официально. . .
Заполнители и расширенный набор символов в C++26
NullReferenced 09.03.2025
C++26 представляет два важных обновления: заполнители и расширенный набор символов. Заполнители (placeholders) решают давнюю проблему лаконичности кода в шаблонных выражениях и лямбда-функциях. Они. . .
Контракты в C++26
NullReferenced 09.03.2025
Контракты – это механизм, позволяющий указывать предусловия, постусловия и инварианты для функций в коде. Эта функциональность должна была стать частью C++20, но была исключена на встрече комитета. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2025, CyberForum.ru