Тип данных определяемый пользователем

pbnoob

Well-known member
25.08.2006
135
0
#1
День добрый!

В (Declarations) прописан сделующий тип данных определяемый пользователем
Код:
Public Type Card
'Name As String
Brand As String
Display As String
Color As String
Price As String

Choice As String
End Type
В библиотеке прописан следующий код
Код:
	Dim MinSelect As Integer
Dim FirstChoiseCard() As Card
...
MinSelect=10
...
Redim FirstChoiseCard(MinSelect-1)
Stop
'Get1 ???
Я по сути задаю некоторый массив "карточек". Как мне правильно написать заголовок функции Get1, чтобы передать в нее весь динамический массив. Буду рад получить наиболее полную информацию можно или нельзя это делать и разумно ли так поступать. (В работе с классами не силен, поэтому просьба на них не ссылать и не пинять мне этим. Буду очень признателен)
 

Akupaka

А че я?.. О.о
04.10.2007
3 360
1
#2
В работе с классами не силен
Да дети уже должны рождаться со знаниями ООП! ))
Учиться надо :)

Как мне правильно написать заголовок функции Get1, чтобы передать в нее весь динамический массив
Код:
function Get1(AParam as Variant)...
If IsArray(AParam) Then ... ' вариант проверки параметра, если необходима
 

pbnoob

Well-known member
25.08.2006
135
0
#3
тогда как прописать её вызов?
Код:
	Call Get1(FirstChoiseCard)
выдает ошибку "type mismatch"
 

Akupaka

А че я?.. О.о
04.10.2007
3 360
1
#4
Сделай объявление
Код:
Dim FirstChoiseCard As Variant
Наперед, ознакомься с операциями Redim и Redim Preserve, на всякий
 

pbnoob

Well-known member
25.08.2006
135
0
#5
Мне не надо variant, мне нужна работа с моим типом данных. Если это не приемлемо или не возможно, то так пожалуйста и ответьте.
 

Akupaka

А че я?.. О.о
04.10.2007
3 360
1
#6
Мне не надо variant, мне нужна работа с моим типом данных
Вариант не запрещает тебе работать с его хранимым как с твоим типом, массивом твоих типов и другой инфы.

Код:
Public Type Card
'Name As String
Brand As String
Display As String
Color As String
Price As String

Choice As String
End Type

Dim MinSelect As Integer
Dim FirstChoiseCardArray As Variant ' переменная для динам массива
Dim FirstChoiseCard As Card ' переменная для удобной работы с элементами динам массива
...
MinSelect=10
...
Redim FirstChoiseCardArray (MinSelect-1)

FirstChoiseCard.Brand = BrandValue
FirstChoiseCard.Display = DisplayValue
...
FirstChoiseCardArray(LBound(FirstChoiseCardArray)) = FirstChoiseCard
...
FirstChoiseCard = FirstChoiseCardArray(LBound(FirstChoiseCardArray))
...
Forall FirstChoiseCardArrayElement In FirstChoiseCardArray
FirstChoiseCard = FirstChoiseCardArrayElement
Print FirstChoiseCard.Brand
End Forall
...
Dim i as integer
For i = LBound(FirstChoiseCardArray) To UBound(FirstChoiseCardArray)
FirstChoiseCard = FirstChoiseCardArray(i)
Print FirstChoiseCard.Brand
Next i