С Новым годом! Форум программистов, компьютерный форум, киберфорум
Visual Basic
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.86/7: Рейтинг темы: голосов - 7, средняя оценка - 4.86
0 / 0 / 0
Регистрация: 23.01.2021
Сообщений: 33

Ошибка run-time error '5'

24.01.2021, 08:21. Показов 1659. Ответов 10

Студворк — интернет-сервис помощи студентам
Приветствую. Имеется программа, которая, в объект Image выводит изображения из папки, так же даны три CommandButton, на которые в свойство Caption выводится наименования: одно-реальное имя выведенного изображения, два других-случайные названия файлов. Так как хотелось что бы в Caption выводилось название без расширения файла(.jpg). были использованы Len и Left для вычисления длины имени файла и удаления 4 символов с конца.
при значении a,b или c = 0 программа встает(картинка с кодом, на ней видно что переменная b=0 )
помогите обойти или решить эту проблему

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
Private Sub Image1_DblClick()
 If Not (tr) Then
   tr = True
   fn = App.Path & "\Picture\Animals"
   fn1 = Dir(fn & "\*.jpg", vbNormal)
      If fn1 = "" Then
        MsgBox "Not ": tr = False: Exit Sub
     End If
     k = Int(Rnd):
   Do While fn1 <> ""
       ReDim Preserve p(k): p(k) = fn1: k = k + 1
      fn1 = Dir()
   Loop
   n = k
End If
 If k > 0 Then
   Do
     i = Int(Rnd * n)
   Loop While p(i) = ""
    k = k - 1
   Image1.Picture = LoadPicture(fn + "" & p(i))
   l = k + 1
   a = Len(p(i))
   b = Len(p(k))
   c = Len(p(l))
   Command2.Caption = Left(p(k), b - 4)
   Command3.Caption = Left(p(i), a - 4)
   Command4.Caption = Left(p(l), c - 4)
   p(i) = ""
Else
   tr = False
   Image1.Picture = LoadPicture
End If
 
End Sub
Миниатюры
Ошибка run-time error '5'   Ошибка run-time error '5'  
0
IT_Exp
Эксперт
34794 / 4073 / 2104
Регистрация: 17.06.2006
Сообщений: 32,602
Блог
24.01.2021, 08:21
Ответы с готовыми решениями:

Ошибка 'Run-time error '-2147217842(80040e4e)' Automation error'.
На VB6.0 сделал несколько форм для вывода данных из базы Access на экран.Выложил на сервер, со своей машины работает, с чужой не хочет. ...

Ошибка в VB6.0 и Access: 'Run-time error -2147217842(80040e4e) Automation error'.
На Visual Basic 6.0 сделал форму которая выводит на экран данные из таблиц Access.Сделал .EXE и выложил на сервер локальной сети.Со своей...

Ошибка Run-time Error 13:Type Mismatch Error
Задача: Дан массив размера N. Найти номер его последнего локального максимума (локальный максимум — это элемент, который больше любого из...

10
Супер-модератор
Эксперт функциональных языков программированияЭксперт Python
 Аватар для Catstail
38163 / 21098 / 4306
Регистрация: 12.02.2012
Сообщений: 34,686
Записей в блоге: 14
24.01.2021, 09:27
Вставь между строками 25 и 26 вот это. Возможно, поможет понять причину

Visual Basic
1
debug.print "i=";i;" k=";k;" l=";l;p(k);" ";p(i);" ";p(l)
0
sleep
 Аватар для I can
4916 / 4567 / 838
Регистрация: 13.04.2015
Сообщений: 9,702
24.01.2021, 09:42
Цитата Сообщение от Kemgrad Посмотреть сообщение
k = Int(Rnd):
Зачем так?
0
0 / 0 / 0
Регистрация: 23.01.2021
Сообщений: 33
24.01.2021, 09:48  [ТС]
Цитата Сообщение от Catstail Посмотреть сообщение
Вставь между строками 25 и 26 вот это. Возможно, поможет понять причину
1 debug.print "i=";i;" k=";k;" l=";l;p(k);" ";p(i);" ";p(l)
i= 101 k= 100 l= 101 УДАВ.jpg УДАВ.jpg

Добавлено через 3 минуты
Цитата Сообщение от I can Посмотреть сообщение
k = Int(Rnd):
Зачем так?
пытался поэкспериментировать чтобы рандом всегда был, а то получалась одна и та же последовательность вывода картинок при работе (но я нуб - ничего не вышло)
0
Супер-модератор
Эксперт функциональных языков программированияЭксперт Python
 Аватар для Catstail
38163 / 21098 / 4306
Регистрация: 12.02.2012
Сообщений: 34,686
Записей в блоге: 14
24.01.2021, 09:49
Kemgrad, приглядись к своей же картинке! Там у тебя в контекстной подсказке b=0. А дальше ты пытаешься вычислить Left(p(k), b - 4). Второй параметр Left не может быть отрицательным - отсюда и error 5
0
24.01.2021, 09:51

Не по теме:

Я тут лишний

0
0 / 0 / 0
Регистрация: 23.01.2021
Сообщений: 33
24.01.2021, 13:52  [ТС]
Catstail, я это видел, но не могу понять как обойти то место, когда одна из переменных A,b,c принимает значение 0, поэтому и решил просить помощи здесь

Добавлено через 7 минут
Цитата Сообщение от I can Посмотреть сообщение
Не по теме:
Я тут лишний
I Can. я ж говорю, я нуб. лет 9 назад в колледже delphi c pascal проходил. сейчас для своего ребенка решил создать мини программу по изучению алфавита, с озвучкой, написанием, картинками. а также мини тест. путем поиска в интернете удалось собрать по частям код для случайного вывода картинок из папки. так что прошу не судить меня строго

Добавлено через 3 часа 52 минуты
Visual Basic
1
2
3
4
5
6
If p(i) = "" Then
   Command3.Caption = ""
   ElseIf p(k) = "" Then
   Command2.Caption = ""
   ElseIf p(l) = "" Then
   Command4.Caption = ""
я заметил что при 0 значении какой либо из переменных a,b или c, в p(i),p(k) или p(l) пустое значение ="". C помощью этих условий удалось избежать прерывания программы, первым к 0 приходит переменная b, при этом:- в command2.caption="" а в command3.caption заносится совсем другое имя файла(не той картинки что показана). при переходе на следующее изображение(выполнение дальше самой процедуры Image1_dblClick), command2 и command4 пустые, а в command3 так же
не верное наименование файла. и эти две ситуации начинают повторяться через каждые 2-5 картинки.
0
0 / 0 / 0
Регистрация: 23.01.2021
Сообщений: 33
24.01.2021, 14:10  [ТС]
если вообще убрать ту часть кода, что отслеживает длину и отнимает символы, то получается вот так:
Миниатюры
Ошибка run-time error '5'   Ошибка run-time error '5'   Ошибка run-time error '5'  

0
sleep
 Аватар для I can
4916 / 4567 / 838
Регистрация: 13.04.2015
Сообщений: 9,702
24.01.2021, 14:20
Kemgrad, такой вариант
Вложения
Тип файла: rar Н22.rar (2.80 Мб, 6 просмотров)
0
0 / 0 / 0
Регистрация: 23.01.2021
Сообщений: 33
24.01.2021, 14:25  [ТС]
I can, уже имеется такое, как средство для ознакомления с животными для ребенка, а при нажатии на кнопку "мини тест" уже переход к картинке с вариантами ответа
Миниатюры
Ошибка run-time error '5'  
0
0 / 0 / 0
Регистрация: 23.01.2021
Сообщений: 33
24.01.2021, 15:46  [ТС]
Visual Basic
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
   If b = 0 Then
    k = k + 2
    b = Len(p(k))
   Command2.Caption = Left(p(k), b - 4)
   Command3.Caption = Left(p(i), a - 4)
   Command4.Caption = Left(p(l), c - 4)
   ElseIf c = 0 Then
   l = l + 2
   c = Len(p(l))
   Command2.Caption = Left(p(k), b - 4)
   Command3.Caption = Left(p(i), a - 4)
   Command4.Caption = Left(p(l), c - 4)
   Else
   Command2.Caption = Left(p(k), b - 4)
   Command3.Caption = Left(p(i), a - 4)
   Command4.Caption = Left(p(l), c - 4)
   End If
почти удалось, но в какой то момент p(l)-Subscript out of range. я так понимаю значение вышло за рамки

Добавлено через 48 минут
добавил несколько условий проверки переменной l, и вроде все пока работает, есть конечно несколько глюков(в виде того что изображение с верным именем файла осталось прежним, а два других имя сменились ). но встречаются эти моменты редко

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
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
If Not (tr) Then
   tr = True
   fn = App.Path & "\Picture\Animals"
   fn1 = Dir(fn & "\*.jpg", vbNormal)
      If fn1 = "" Then
        MsgBox "Not ": tr = False: Exit Sub
     End If
     k = 0:
   Do While fn1 <> ""
       ReDim Preserve p(k): p(k) = fn1: k = k + 1
      fn1 = Dir()
   Loop
   n = k
End If
 If k > 0 Then
   Do
     i = Int(Rnd * n)
   Loop While p(i) = ""
    k = k - 1
   Image1.Picture = LoadPicture(fn + "\" & p(i))
   l = i - 2
   If l <= 1 Then
   l = i + 2
   ElseIf l >= 114 Then
   l = i - 2
   Else
    a = Len(p(i))
    b = Len(p(k))
    c = Len(p(l))
     If b = 0 Then
     k = k + 2
     b = Len(p(k))
     Command2.Caption = Left(p(k), b - 4)
     Command3.Caption = Left(p(i), a - 4)
     Command4.Caption = Left(p(l), c - 4)
     ElseIf c = 0 Then
     l = l - 2
     c = Len(p(l))
     Command2.Caption = Left(p(k), b - 4)
     Command3.Caption = Left(p(i), a - 4)
     Command4.Caption = Left(p(l), c - 4)
     Else
     Command2.Caption = Left(p(k), b - 4)
     Command3.Caption = Left(p(i), a - 4)
     Command4.Caption = Left(p(l), c - 4)
   End If
   End If
Else
   tr = False
   Image1.Picture = LoadPicture
End If
End Sub
 
Private Sub Form_Load()
If Not (tr) Then
   tr = True
   fn = App.Path & "\Picture\Animals"
   fn1 = Dir(fn & "\*.jpg", vbNormal)
      If fn1 = "" Then
        MsgBox "Not ": tr = False: Exit Sub
     End If
     k = 0:
   Do While fn1 <> ""
       ReDim Preserve p(k): p(k) = fn1: k = k + 1
      fn1 = Dir()
   Loop
   n = k
End If
 If k > 0 Then
   Do
     i = Int(Rnd * n)
   Loop While p(i) = ""
    k = k - 1
   Image1.Picture = LoadPicture(fn + "\" & p(i))
   l = i + 1
   a = Len(p(i))
   b = Len(p(k))
   c = Len(p(l))
   Command2.Caption = Left(p(k), b - 4)
   Command3.Caption = Left(p(i), a - 4)
   Command4.Caption = Left(p(l), c - 4)
   p(i) = ""
Else
   tr = False
   Image1.Picture = LoadPicture
End If
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
BasicMan
Эксперт
29316 / 5623 / 2384
Регистрация: 17.02.2009
Сообщений: 30,364
Блог
24.01.2021, 15:46
Помогаю со студенческими работами здесь

Ошибка: Run-time error 48 Error loading DLL
программа выдает ошибку: Run-time error 48 Error loading DLL выдает это когда вызывается процедура где есть: Dim oExcel...

Ошибка 'Run-time error 91'.
Тут такой касяк... Значит написал я прогу, откампилировал и запустил. Все работало, но только ну моем компе, на других - 'Run-time error...

Ошибка Run-time error '713'
Class not registered. CLSID {59245250-7A2F-11D0-9482-00A0C91110ED} При запуске на кленте без VB, подскажите plz чего хотит и где (если...

Ошибка run-time error 11: division by zero
помогите пожалуйста в чем ошибка Sub vba24() Dim x!, y!, z!, s!, p!, i% s = 0: p = 1 For i = 1 To 8 x = Cells(i + 1, 1) y =...

Ошибка run-time error '5' после unload
вызываю из формы form2.show vbmodal Ошибка возникает после того как я закрываю эту модальну модальную форму. unload me ...


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

Или воспользуйтесь поиском по форуму:
11
Ответ Создать тему
Новые блоги и статьи
Модель микоризы: классовый агентный подход
anaschu 02.01.2026
Раньше это было два гриба и бактерия. Теперь три гриба, растение. И на уровне агентов добавится между грибами или бактериями взаимодействий. До того я пробовал подход через многомерные массивы,. . .
Учёным и волонтёрам проекта «Einstein@home» удалось обнаружить четыре гамма-лучевых пульсара в джете Млечного Пути
Programma_Boinc 01.01.2026
Учёным и волонтёрам проекта «Einstein@home» удалось обнаружить четыре гамма-лучевых пульсара в джете Млечного Пути Сочетание глобально распределённой вычислительной мощности и инновационных. . .
Советы по крайней бережливости. Внимание, это ОЧЕНЬ длинный пост.
Programma_Boinc 28.12.2025
Советы по крайней бережливости. Внимание, это ОЧЕНЬ длинный пост. Налог на собак: https:/ / **********/ gallery/ V06K53e Финансовый отчет в Excel: https:/ / **********/ gallery/ bKBkQFf Пост отсюда. . .
Кто-нибудь знает, где можно бесплатно получить настольный компьютер или ноутбук? США.
Programma_Boinc 26.12.2025
Нашел на реддите интересную статью под названием Anyone know where to get a free Desktop or Laptop? Ниже её машинный перевод. После долгих разбирательств я наконец-то вернула себе. . .
Thinkpad X220 Tablet — это лучший бюджетный ноутбук для учёбы, точка.
Programma_Boinc 23.12.2025
Рецензия / Мнение/ Перевод Нашел на реддите интересную статью под названием The Thinkpad X220 Tablet is the best budget school laptop period . Ниже её машинный перевод. Thinkpad X220 Tablet —. . .
PhpStorm 2025.3: WSL Terminal всегда стартует в ~
and_y87 14.12.2025
PhpStorm 2025. 3: WSL Terminal всегда стартует в ~ (home), игнорируя директорию проекта Симптом: После обновления до PhpStorm 2025. 3 встроенный терминал WSL открывается в домашней директории. . .
Как объединить две одинаковые БД Access с разными данными
VikBal 11.12.2025
Помогите пожалуйста !! Как объединить 2 одинаковые БД Access с разными данными.
Новый ноутбук
volvo 07.12.2025
Всем привет. По скидке в "черную пятницу" взял себе новый ноутбук Lenovo ThinkBook 16 G7 на Амазоне: Ryzen 5 7533HS 64 Gb DDR5 1Tb NVMe 16" Full HD Display Win11 Pro
Музыка, написанная Искусственным Интеллектом
volvo 04.12.2025
Всем привет. Некоторое время назад меня заинтересовало, что уже умеет ИИ в плане написания музыки для песен, и, собственно, исполнения этих самых песен. Стихов у нас много, уже вышли 4 книги, еще 3. . .
От async/await к виртуальным потокам в Python
IndentationError 23.11.2025
Армин Ронахер поставил под сомнение async/ await. Создатель Flask заявляет: цветные функции - провал, виртуальные потоки - решение. Не threading-динозавры, а новое поколение лёгких потоков. Откат?. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru