В подпрограмме несколько вариантов.
1) если в вызываемой командной строке нет ссылки на VINIT и VOUT - 1 вариант расчета;
2) если в вызываемой командной строке ссылка на VINIT присутствует и при входе в подпрограмму VINIT не имеет массива /Ubound(VINIT)<0/ - 2 вариант расчета заполнения массива VINIT значениями;
3) если в вызываемой командной строке ссылка на VINIT присутствует и при входе в подпрограмму VINIT имеет массив /Ubound(VINIT)>0/ - 3 вариант расчета
- Код: Выделить всё
call filter(b,a,x,y) ' 1 вариант
call filter(b,a,x,y,z) ' 2 вариант (z - внутренний массив подпрограммы)
call filter(b,a,x,y,z,znew) ' 3 вариант (z - инициализирующий массив; znew - новое состояние подпрограммы)
Проблема состоит в том, что переменная DATA всегда имеет статус Nothing при работе в среде VB.NET; при вызове функции из VB6 - все отлично срабатывает. В чем дело?
- Код: Выделить всё
Public Sub FILTER(ByRef NUM As Double(), ByRef DEN As Double(), ByRef X As Double(), ByRef Y As Double(), Optional ByRef VINIT As Object = Nothing, Optional ByVal VOUT As Object = Nothing)
...
If VINIT IsNot Nothing Then
' Задан вектор начального состояния фильтра
NV = UBound(VINIT)
' Определить выходной массив VOUT
isVIN = True
...
ElseIf VOUT IsNot Nothing Then
' Задан вектор начального состояния фильтра
If ArrayExist(VOUT) Then
NV = UBound(VOUT)
Else
' Определить выходной массив VOUT
isVIN = True
...
End If
End If
...
End Sub