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

как правильно вызвать sub?

06.09.2010, 21:50. Показов 1387. Ответов 8
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
[code]
Назрело несколько ворпросов об использовании sub'ов
1)как правильно вызвать sub,почему если я пишу
Draw(Player, CountOBlocks, b(), C1)
то выдается сообщение: expected expression
2)почему если массив не объявлен в general,а объявлен в другом sub'е,то в коде
Draw(Player, CountOBlocks, b(), C1)
происходит ошибка и пишеться : expected array или :byref argument type mismath
3)И еще один ламерский вопрос чем sub отличается от Function
Заранее благодарен.
[code/]
0
IT_Exp
Эксперт
34794 / 4073 / 2104
Регистрация: 17.06.2006
Сообщений: 32,602
Блог
06.09.2010, 21:50
Ответы с готовыми решениями:

Функции API CreateDesktop и CreateProcess - как их правильно вызвать?
Помогите с вызовом функции. Что не так? Например CreateProcess. Меняю стандартное объявление функции как: Private Declare Function...

Как правильно вызвать JS
Здравствуйте. Есть код: <a class="btn btn-success waves-effect waves-light" href="javascript:;"...

Как правильно вызвать функцию?
Собственно вопрос ясен из заголовка, никак не пойму, как правильно сделать. Выдает ошибку in fuction 'int main()': error: expected...

8
Messir
07.09.2010, 02:19
Функция, в отличие от процедуры, возвращает значение. В остальном они абсолютно одинаковы.
А ошибки оно тебе выдает потому, что когда передаешь параметры в процедуру, их в скобки брать не нужно - это только для функций скобки нужны.
0 / 0 / 0
Регистрация: 22.12.2009
Сообщений: 131
07.09.2010, 10:07  [ТС]
Спасибо за разьяснения.
Но ошибка не изчезла указывая на массив он пишет: expected array
хотя он у меня объявлен в другой процедуре.
0
 Аватар для palva
4276 / 2969 / 692
Регистрация: 08.06.2007
Сообщений: 9,922
Записей в блоге: 4
07.09.2010, 10:18
1. Sub положено вызывать
Call Draw(Player, CountOBlocks, b(), C1)
либо
Draw Player, CountOBlocks, b(), C1
2. Попробуйте убрать скобки - b вместо b()
0
0 / 0 / 0
Регистрация: 22.12.2009
Сообщений: 131
07.09.2010, 10:34  [ТС]
все равно ему что-то не нравиться все проходит нормально только если объявить все в general
0
0 / 0 / 0
Регистрация: 22.12.2009
Сообщений: 131
07.09.2010, 10:46  [ТС]
для понятности моего вопроса привожу код:
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
Private Sub Form_Load()
  Randomize Timer
  Picture1.ScaleHeight = 1000
  Picture1.ScaleWidth = 1000
  Picture1.AutoRedraw = True
  Load_LeveL_1
 
  Draw player, CountOBlocks, b, C1
End sub
Sub Load_LeveL_1()
 Dim player As Blocks
 CountOBlocks = 2
 Dim b(1) As Blocks
 
 
  With b(0)
 .x1 = 0: .y1 = 0: .x2 = 0: .y2 = 100: .x3 = 100: .y3 = 100: .x4 = 100: y4 = 0: .color = vbRed
 End With
 With b(1)
 .x1 = 900: .y1 = 100: .x2 = 900: .y2 = 100: .x3 = 1000: .y3 = 100: .x4 = 1000: y4 = 0: .color = vbRed
 End With
 With player
  .x1 = 400: .y1 = 800: .x2 = 400: .y2 = 900: .x3 = 600: .y3 = 900: .x4 = 600: .y4 = 900: .color = vbBlack
 End With
 With C1
  .x = 500: .y = 785: .rad = 15: .color = vbGreen
 End With
 End Sub
 
Private Sub Draw(PL As Blocks, count As Integer, WB() As Blocks, c As Circles)
  For i = 0 To count - 1
  Picture1.Line (WB(i).x1, WB(i).y1)-(WB(i).x2, WB(i).y2), WB(i).color
  Picture1.Line (WB(i).x2, WB(i).y2)-(WB(i).x3, WB(i).x3), WB(i).color
  Picture1.Line (WB(i).x3, WB(i).y3)-(WB(i).x4, WB(i).y4), WB(i).color
  Picture1.Line (WB(i).x4, WB(i).y4)-(WB(i).x1, WB(i).x1), WB(i).color
  Next i
  Picture1.Line (PL.x1, PL.y1)-(PL.x2, PL.y2), PL.color
  Picture1.Line (PL.x2, PL.y2)-(PL.x3, PL.x3), PL.color
  Picture1.Line (PL.x3, PL.y3)-(PL.x4, PL.y4), PL.color
  Picture1.Line (PL.x4, PL.y4)-(PL.x1, PL.x1), PL.color
  Picture1.Circle (c.x, c.y), c.rad, c.color
 
 
 End Sub
0
0 / 0 / 0
Регистрация: 04.03.2008
Сообщений: 250
07.09.2010, 11:35
Совершенно правильное поведение - если переменная объявлена в процедуре, она видна только этой процедуре. Если переменная объявлена в области Declarations формы, она видна всем процедурам и функциям формы, или всему проекту, если объявлена, как Public - тогда это будет свойством формы. Переменная, объявленная в модуле, видна всему проекту. Называется все это 'область видимости', и требует правильного использования.
0
 Аватар для palva
4276 / 2969 / 692
Регистрация: 08.06.2007
Сообщений: 9,922
Записей в блоге: 4
07.09.2010, 12:12
Переменная

Dim b(1) As Blocks

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

Draw player, CountOBlocks, b, C1

внутри процедуры Load_LeveL_1
0
0 / 0 / 0
Регистрация: 22.12.2009
Сообщений: 131
07.09.2010, 14:25  [ТС]
Palva
совет хороший но в данном случае не подходит.
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
BasicMan
Эксперт
29316 / 5623 / 2384
Регистрация: 17.02.2009
Сообщений: 30,364
Блог
07.09.2010, 14:25
Помогаю со студенческими работами здесь

Как правильно вызвать процедуру?
как правильно вызвать данную процедуру? procedure n1(i:integer; A:T1); begin for I := 1 to 3 do begin if...

Как правильно вызвать функцию?
Добрый день. подскажите как исправить ошибку: TAsync * Async ; Async = new TAsync; ComPort->...

Как правильно вызвать функцию?
Вопрос как правильно сделать вызов из mainLoop функцию comlastLogin через sortlastLogin. Если напрямую вызывать из mainLoop функцию...

Как правильно вызвать процедуру.
Помогите пожалуйста с вызовом процедур. Вот у у меня есть процедура сортировки: procedure SortVstav(mns:mas;Var ms:mas;Var nop:integer);...

Как правильно вызвать ShellExecute
Не получается открыть ворд файл. Пишу вот такой код. Нету ошибок,но при нажатии на кнопку ничего не происходит( void __fastcall...


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

Или воспользуйтесь поиском по форуму:
9
Ответ Создать тему
Новые блоги и статьи
Кто-нибудь знает, где можно бесплатно получить настольный компьютер или ноутбук? США.
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-динозавры, а новое поколение лёгких потоков. Откат?. . .
Поиск "дружественных имён" СОМ портов
Argus19 22.11.2025
Поиск "дружественных имён" СОМ портов На странице: https:/ / norseev. ru/ 2018/ 01/ 04/ comportlist_windows/ нашёл схожую тему. Там приведён код на С++, который показывает только имена СОМ портов, типа,. . .
Сколько Государство потратило денег на меня, обеспечивая инсулином.
Programma_Boinc 20.11.2025
Сколько Государство потратило денег на меня, обеспечивая инсулином. Вот решила сделать интересный приблизительный подсчет, сколько государство потратило на меня денег на покупку инсулинов. . . .
Ломающие изменения в C#.NStar Alpha
Etyuhibosecyu 20.11.2025
Уже можно не только тестировать, но и пользоваться C#. NStar - писать оконные приложения, содержащие надписи, кнопки, текстовые поля и даже изображения, например, моя игра "Три в ряд" написана на этом. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2025, CyberForum.ru