Страница: 1 |
Страница: 1 |
Вопрос: Может ли функция возвращать несколько значений?
Добавлено: 26.08.06 18:12
Автор вопроса: crazyd
Здравствуйте.
Возник такой вопрос: может ли функция возвращать несколько значений?
К примеру, имеем числа a и b, необходимо чтобы функция вернула сумму, разность и произведение этих чисел.
Подскажите пожалуйста, как это можно реализовать.
Заранее благодарен.
Ответы
Всего ответов: 10
Номер ответа: 1
Автор ответа:
VβÐUηìt
Вопросов: 246
Ответов: 3333
Web-сайт:
Профиль | | #1
Добавлено: 26.08.06 18:25
Вощем так. Создаем тип переменной Znachenie:
Private Type Znachenie
Summa As Integer 'Сумма чисел
Raznost As Integer 'Разность чисел
Proizvedenie As Integer 'Произведение чисел
End Type
Далее примерно, твоя функции:
Function Schet(ByVal Number1 As Integer, ByVal Number2 As Integer) As Znachenie
Dim Result As Znachenie
Result.Summa = Number1 + Number2
Result.Raznost = Number1 - Number2
Result.Proizvedenie = Number1 * Number2
Schet = Result
End Function
Номер ответа: 2
Автор ответа:
Artyom
Разработчик
Вопросов: 130
Ответов: 6602
Профиль | | #2
Добавлено: 26.08.06 18:34
Структуру делай. Или класс, что больше по смыслу подходит
Номер ответа: 3
Автор ответа:
crazyd
Вопросов: 6
Ответов: 13
Профиль | | #3
Добавлено: 26.08.06 18:54
Private Type Znachenie
Summa As Integer 'Сумма чисел
Raznost As Integer 'Разность чисел
Proizvedenie As Integer 'Произведение чисел
End Type
Function Schet(ByVal Number1 As Integer, ByVal Number2 As Integer) As Znachenie
Dim Result As Znachenie
Result.Summa = Number1 + Number2
Result.Raznost = Number1 - Number2
Result.Proizvedenie = Number1 * Number2
Schet = Result
А как мне теперь доступ к результату получить?
так чё-то не выходит!
Номер ответа: 4
Автор ответа:
Artyom
Разработчик
Вопросов: 130
Ответов: 6602
Профиль | | #4
Добавлено: 26.08.06 19:03
C = Schet.Summa(a, b)
MsgBox(C.Summa)
MsgBox(C.Raznost)
MsgBox(C.Proizvedeniye)
Номер ответа: 5
Автор ответа:
crazyd
Вопросов: 6
Ответов: 13
Профиль | | #5
Добавлено: 26.08.06 20:01
Чё-то всё равно никак неполучается.
Куда надо этот код пихнуть:
Summa As Integer 'Сумма чисел
Raznost As Integer 'Разность чисел
Proizvedenie As Integer 'Произведение чисел
End Type
Function Schet(ByVal a As Integer, ByVal b As Integer) As Znachenie
Dim Result As Znachenie
Result.Summa = a + b
Result.Raznost = a - b
Result.Proizvedenie = a * b
Schet = Result
End Function
Пробывал в саму форму так:
Summa As Integer 'Сумма чисел
Raznost As Integer 'Разность чисел
Proizvedenie As Integer 'Произведение чисел
End Type
Function Schet(ByVal a As Integer, ByVal b As Integer) As Znachenie
Dim Result As Znachenie
Result.Summa = a + b
Result.Raznost = a - b
Result.Proizvedenie = a * b
Schet = Result
End Function
Private Sub Command1_Click()
Dim c As Znachenie
a = Val(Text1.Text)
b = Val(Text2.Text)
с = Schet.Summa(a, b)
Debug.Print c
End Sub
Не выходит.
Пробывал в модуль запихнуть тоже ошибки какие-то выдаёт.
Подскажите пожалуйста, только начал изучать VB.
Номер ответа: 6
Автор ответа:
Artyom
Разработчик
Вопросов: 130
Ответов: 6602
Профиль | | #6
Добавлено: 26.08.06 21:47
Я написал программу для работы с базой данных, запускаю, но она какие-то ошибки выдает.
Я изменил код, но все равно ошибки выдает какие-то, подскажите, что делать?
Если ошибки выдает, смотри, что за ошибки, вряд ли кто-то тут будет разбираться в куске кода длинее 3-х строк...
Номер ответа: 7
Автор ответа:
-АлександР-
Вопросов: 55
Ответов: 1008
Web-сайт:
Профиль | | #7
Добавлено: 26.08.06 22:34
По-моему у тебя должно быть вместо
a = Val(Text1.Text)
b = Val(Text2.Text)
с = Schet.Summa(a, b)
Debug.Print c
a = Val(Text1.Text)
b = Val(Text2.Text)
с = Schet(a, b).Summa
Debug.Print c
P.S. Я у себя не проверял, но вроде бы...
Номер ответа: 8
Автор ответа:
BUG(O)R
ICQ: 827887
Вопросов: 13
Ответов: 142
Web-сайт:
Профиль | | #8
Добавлено: 27.08.06 08:15
Debug.Print Debug.Print c.Proizvedenie & vbCrLf & c.Raznost & vbCrLf & c.Summa
Номер ответа: 9
Автор ответа:
HACKER
Разработчик Offline Client
Вопросов: 236
Ответов: 8362
Профиль | | #9
Добавлено: 27.08.06 14:36
в мобуль или класс
Public Type Znachenie
Summa As Integer 'Сумма чисел
Raznost As Integer 'Разность чисел
Proizvedenie As Integer 'Произведение чисел
End Type
Номер ответа: 10
Автор ответа:
LamerOnLine
ICQ: 334781088
Вопросов: 108
Ответов: 2822
Профиль | | #10
Добавлено: 28.08.06 13:38
Ну и нах это надо? Используй in/out параметры, передавай результирующие переменные ByRef, и никакого гемора со структурами. Возможность использования структур в качестве параметров членов класса сильно ограничена, а выносить функции в модуль не всегда удобно, особенно когда создаешь свою библиотеку классов.