Ls: Illegal Redim

ToxaRat

Чёрный маг
Green Team
06.11.2007
3 332
42
BIT
0
Код:
Class c_MasFiles
Public Count As Integer
Public Rec() As c_RecFiles

Sub Add2Class(sName As String, sPath As String, sSub As String, bFile As Boolean) ' Добавить в класс файл или директорию
Dim i As Integer
me.Count = me.Count + 1
i = me.Count 
ReDim Preserve me.Rec(i)
Set Me.Rec(i) = New c_RecFiles
Me.Rec(i).NameFile = sName
Me.Rec(i).Path = sPath
Me.Rec(i).sSubdir = sSub
Me.Rec(i).FullPath = sPath & sSub & sName
Me.Rec(i).isFile = bFile
End Sub

ReDim Preserve me.Rec(i)
тут ошибка, причем на срабатывании в 6й раз....я в глубокой непонятке
это не фиксированный массив
 

lmike

нет, пердело совершенство
Lotus Team
27.08.2008
7 985
611
BIT
472
0-ой элемент злонамеренно пропускается?
 

savl

Lotus Team
28.10.2011
2 624
314
BIT
542
Try:
Код:
ReDim Preserve me.Rec(i) as c_RecFiles

PS. I use LIST

Добавлено: О переключилась.
Может действительно тип меняется, но странно почему на 6-ой раз.
И может действительно использовать список раз 0-й элемент пустует.
 

lmike

нет, пердело совершенство
Lotus Team
27.08.2008
7 985
611
BIT
472
вот нафига эти танцы с Count...
есть Ubound
нужен подсчет - Property Get Count As Long:Ubound(me.Rec)+1
 

ToxaRat

Чёрный маг
Green Team
06.11.2007
3 332
42
BIT
0
вот нафига эти танцы с Count...
есть Ubound
нужен подсчет - Property Get Count As Long:Ubound(me.Rec)+1
то есть вместо чёткой и быстрой переменной ты предлагаешь каждый раз запускать тяжелую функцию которая считает размер? :)
 

lmike

нет, пердело совершенство
Lotus Team
27.08.2008
7 985
611
BIT
472
то есть вместо чёткой и быстрой переменной ты предлагаешь каждый раз запускать тяжелую функцию которая считает размер? :)
т.е. ты проводил замеры и готов поделится ими? :(

Добавлено: вот даже представить не могу - зачем мне Count
 

ToxaRat

Чёрный маг
Green Team
06.11.2007
3 332
42
BIT
0
Public Rec() As c_RecFiles
заменил на
Public Rec() As Variant

и всё проканало, первый раз с таким сталкиваюсь...
 

lmike

нет, пердело совершенство
Lotus Team
27.08.2008
7 985
611
BIT
472
Public Rec() As c_RecFiles
заменил на
Public Rec() As Variant

и всё проканало, первый раз с таким сталкиваюсь...
я тебе больше скажу - списки (с классами) и массивы классов "проще" указывать как Variant иначе и в итераторах (типа forall) можно наткнуться на type mismatch
 

ToxaRat

Чёрный маг
Green Team
06.11.2007
3 332
42
BIT
0
т.е. ты проводил замеры и готов поделится ими? ;)

Добавлено: вот даже представить не могу - зачем мне Count
ты эта....иди индусам обьясни, на кой они в Col.Count используют :( :D :D видать совсем оборзели :p

Добавлено:
я тебе больше скажу - списки (с классами) и массивы классов "проще" указывать как Variant иначе и в итераторах (типа forall) можно наткнуться на type mismatch
В моей 15ти летней работы с лотусом - это произошло впервые :)
в данном контексте есть подозрение, что это из-за работы с функцией Dir() и её псевдо рекурсией...
 
Мы в соцсетях:

Обучение наступательной кибербезопасности в игровой форме. Начать игру!