Visual Basic, .NET, ASP, VBScript
 

   
   
     

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

Страница: 1 |

 

  Вопрос: Существует ли в Vb6 возможность... Добавлено: 01.03.07 13:14  

Автор вопроса:  Tur | ICQ: 201446364 
Существует ли в Vb6 возможность создать такую функцию которая бы могла получать массив любого типа и определять тип массива?
Что то вроде этого:

Function myfunc(arr() as Variant)
... ' arr -> Double
... ' arr -> Byte
.................
end Function

Ответить

  Ответы Всего ответов: 4  

Номер ответа: 1
Автор ответа:
 LamerOnLine



ICQ: 334781088 

Вопросов: 108
Ответов: 2822
 Профиль | | #1 Добавлено: 01.03.07 13:28

Option Explicit

Private Sub Form_Load()
Dim Array1() As Byte
Dim Array2() As Integer
Dim Array3() As String
Dim Array4() As Object
myfunc Array1
myfunc Array2
myfunc Array3
myfunc Array4
End Sub

Private Function myfunc(arr As Variant)
MsgBox TypeName(arr)
End Function

Это самый ламерский способ.
Вообще смотря что тебе нужно. Можешь просто проверять поле vt структуры VARIANT.

Ответить

Номер ответа: 2
Автор ответа:
 Tur



ICQ: 201446364 

Вопросов: 22
Ответов: 72
 Профиль | | #2 Добавлено: 02.03.07 14:04
LamerOnLine, спасибо!
У меня есть DLL с кучей функций, который я подключаю к своим прогам. Там есть и такие простые функции:

Sub savear(inar() As Double, outar() As Double)
On Error GoTo calcErr
Dim i As Long: ReDim outar(LBound(inar) To UBound(inar))
For i = LBound(inar) To UBound(inar): outar(i) = inar(i): Next: Exit Sub
calcErr: ReDim outar(1 To 1): outar(1) = -777
End Sub

Чтобы не писать подобные функции для других типов массивов мне и понадобилось определять тип массива
Это что то вроде переменного числа аргументов функции. Теперь еще добавилать переменность типа массива.
А как и зачем определять поле vt структуры VARIANT?

Ответить

Номер ответа: 3
Автор ответа:
 LamerOnLine



ICQ: 334781088 

Вопросов: 108
Ответов: 2822
 Профиль | | #3 Добавлено: 02.03.07 14:12
Да, к сожалению VB6 не поддерживает шаблоны функций, посему порой приходится извращаться.
ЗЫ Поле vt отвечает за тип переменной VARIANT. Можешь узнать является ли она массивом, и если да - то какого типа. Полезно на С++, в VB это можно сделать тупее и проще.

Ответить

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



ICQ: 201446364 

Вопросов: 22
Ответов: 72
 Профиль | | #4 Добавлено: 02.03.07 14:37
Вся моя проблема была в декларации:
Private Function myfunc(arr As Variant)
Раньше я писал так:
Private Function myfunc(arr() As Variant)
И получал бред

LamerOnLine, спасибо!

Ответить

Страница: 1 |

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



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