Visual Basic, .NET, ASP, VBScript
 

   
   
     

Форум - Общий форум

Страница: 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



А как мне теперь доступ к результату получить?

с = Schet.Summa(a, b)


так чё-то не выходит!

Ответить

Номер ответа: 4
Автор ответа:
 Artyom



Разработчик

Вопросов: 130
Ответов: 6602
 Профиль | | #4 Добавлено: 26.08.06 19:03
Dim C As Znachenie
C = Schet.Summa(a, b)

MsgBox(C.Summa)
MsgBox(C.Raznost)
MsgBox(C.Proizvedeniye)

Ответить

Номер ответа: 5
Автор ответа:
 crazyd



Вопросов: 6
Ответов: 13
 Профиль | | #5 Добавлено: 26.08.06 20:01
Чё-то всё равно никак неполучается.
Куда надо этот код пихнуть:

Private Type Znachenie
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 Type Znachenie
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-сайт: sham.clan.su
 Профиль | | #7
Добавлено: 26.08.06 22:34
По-моему у тебя должно быть вместо
Dim c As Znachenie
a = Val(Text1.Text)
b = Val(Text2.Text)
с = Schet.Summa(a, b)
Debug.Print c
так
Dim c As Integer
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-сайт: hunger.ru
 Профиль | | #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, и никакого гемора со структурами. Возможность использования структур в качестве параметров членов класса сильно ограничена, а выносить функции в модуль не всегда удобно, особенно когда создаешь свою библиотеку классов.

Ответить

Страница: 1 |

Поиск по форуму



© Copyright 2002-2011 VBNet.RU | Пишите нам