Гость
Целевая тема:
Создать новую тему:
Автор:
Форумы / Visual Basic [игнор отключен] [закрыт для гостей] / вложенные типы / 4 сообщений из 4, страница 1 из 1
05.07.2007, 06:29
    #34639644
detail
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
вложенные типы
Думал, что такое возможно, однако не получается реализовать: собственные типы с элементами-массивами переменной длины.
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
Type product
    productCode As Integer
    
    titles As Variant
    instances As Variant
    
    sqlQuery As String
End Type

Type productFile
    products As Variant
    fileName As String
    sheetName As String
    checkColumn As Integer
End Type
В типе product элемент titles и instances - массивы строк и целых чисел соответственно. Размер массива для каждого элемента типа product может быть свой.

Элемент products внутри productFile - это массив типа product. Число product в productFile может быть разным, поэтому вместо массива пришлось объявить variant, но даже так не работает.

ReDim myFile(0).products(6) As product - вызывает сообщение об ошибке array already dimensioned.

Как правильно организовать типы? Если лучше объектами, просьба показать на пальцах, как это делать.
...
Рейтинг: 0 / 0
05.07.2007, 07:11
    #34639655
TIKO
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
вложенные типы
не очень понял что именно ты хочешь зделать но так можно объявить в своих типах массив
с переменной длиной
в модуле
Код: plaintext
1.
2.
3.
4.
5.
Public Type productFile
    products() As String
    fileName As String
    sheetName As String
    checkColumn As Integer
End Type
в процедурах
Код: plaintext
1.
2.
3.
4.
5.
Dim f As productFile
Dim i As Integer
ReDim f.products( 10 )
For i =  0  To  10 
f.products(i) = "элемент" & i
Next i
...
Рейтинг: 0 / 0
05.07.2007, 07:36
    #34639670
TIKO
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
вложенные типы
или можно так поизвращаться со вложенными масивами
в модуле
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
Public Type product
    productCode As Integer
    titles() As Variant
    instances As Variant
    sqlQuery As String
End Type

Public Type productFile
    products() As product
    fileName As String
    sheetName As String
    checkColumn As Integer
End Type


в форме

Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
Private Sub Command1_Click()
Dim f As productFile
Dim i As Integer
Dim j As Integer
ReDim f.products( 10 )
For i =  0  To  10 
    ReDim f.products(i).titles( 10 )
Next i
For i =  0  To  10 
   For j =  0  To  10 
        f.products(i).titles(j) = "products " & i & " titles" & j
    Next j
Next i
For i =  0  To  10 
        For j =  0  To  10 
        Debug.Print f.products(i).titles(j)
        Next j
Next i
End Sub
...
Рейтинг: 0 / 0
05.07.2007, 07:40
    #34639676
detail
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
вложенные типы
Работает. Спасибо!
...
Рейтинг: 0 / 0
Форумы / Visual Basic [игнор отключен] [закрыт для гостей] / вложенные типы / 4 сообщений из 4, страница 1 из 1
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]