Страница: 1 |
Страница: 1 |
Вопрос: проблема с классами и Get
Добавлено: 25.09.07 17:23
Автор вопроса: KreAtoR
Народ у меня есть класс в котором есть массив буля
ArMethod(100) as Boolean
и есть Property
Public Property Get GetArray(index as integer)
GetArray = ArMethod(index)
end Property
проблема заключается в том что я могу вытащить значение только таким способом
msgbox object.GetArray(3)
но мне надо вывести все значения в массив строк
Dim i as integer
for i=0 to 100
lMethod(i).Caption = object.getArray(i)
next i
так вот когда передаю i а не число, по выходит ошибка, мол типы данных не сходятся.
подскажите как сделать
Ответы
Всего ответов: 11
Номер ответа: 1
Автор ответа:
Mr.Smile
ICQ: 427682013
Вопросов: 14
Ответов: 464
Профиль | | #1
Добавлено: 25.09.07 18:05
А может так?
for i=0 to 100
lMethod(i).Caption = CLng(object.getArray(i))
next i
Номер ответа: 2
Автор ответа:
KreAtoR
Вопросов: 120
Ответов: 438
Профиль | | #2
Добавлено: 25.09.07 18:09
а причем здесь Clng ведь значение то True/False
Номер ответа: 3
Автор ответа:
Mr.Smile
ICQ: 427682013
Вопросов: 14
Ответов: 464
Профиль | | #3
Добавлено: 25.09.07 18:10
Ой! Надо CStr наверное. Вообщем, ошибка вот здесь:
for i=0 to 100
lMethod(i).Caption = object.getArray(i)
next i
"типы данных не сходятся" по причине их несовпадения.
Во-первых, что такое "lMethod" ?
Во-вторых, в "Public Property Get GetArray(index as integer)" лучше указать тип получаемых данных, например As Boolean или As Long.
Если lMethod - это Label, то так должно работать:
for i=0 to 100
lMethod(i).Caption = CStr(object.getArray(i))
next i
Номер ответа: 4
Автор ответа:
Winand
Вопросов: 87
Ответов: 2795
Web-сайт:
Профиль | | #4
Добавлено: 25.09.07 23:25
Имхо абсолютно пофек - что есть lMethod
Главное - что такое caption
Номер ответа: 5
Автор ответа:
Winand
Вопросов: 87
Ответов: 2795
Web-сайт:
Профиль | | #5
Добавлено: 25.09.07 23:29
Да и булевы вроде нормально к Caption пределываются.
Возможно вот так надо:
GetArray = ArMethod(index)
End Property
Потому что сейчас object.getArray(i) - Variant
Номер ответа: 6
Автор ответа:
Mr.Smile
ICQ: 427682013
Вопросов: 14
Ответов: 464
Профиль | | #6
Добавлено: 25.09.07 23:33
Я об этом уже говорил в ответе 3 А автор куда-то скрылся, дела-дела...
Номер ответа: 7
Автор ответа:
Winand
Вопросов: 87
Ответов: 2795
Web-сайт:
Профиль | | #7
Добавлено: 25.09.07 23:43
Оу, сори Я "во-первых" прочитал, а "во-вторых" нет.. почему-то))
Номер ответа: 8
Автор ответа:
Winand
Вопросов: 87
Ответов: 2795
Web-сайт:
Профиль | | #8
Добавлено: 25.09.07 23:44
Да, еще могут быть траблы с нижней границей массива.
Номер ответа: 9
Автор ответа:
Mr.Smile
ICQ: 427682013
Вопросов: 14
Ответов: 464
Профиль | | #9
Добавлено: 26.09.07 00:32
LBound([имя массива]) - нижняя граница массива, UBound([имя массива]) - верхняя граница
Номер ответа: 10
Автор ответа:
HACKER
Разработчик Offline Client
Вопросов: 236
Ответов: 8362
Профиль | | #10
Добавлено: 26.09.07 13:38
Public Property Get GetArray(byval index as integer) as bool
GetArray = ArMethod(index)
end Property
Dim i as integer
for i=0 to 100
lMethod(i).Caption = cstr(object.getArray(i))
next i
И проверь, чтобы типы соответствовали, там где я подчеркнул.
Номер ответа: 11
Автор ответа:
KreAtoR
Вопросов: 120
Ответов: 438
Профиль | | #11
Добавлено: 26.09.07 13:49
ура заработало!!!!
property изменил как вы и сказали и все пошло. передавать значение как стринг не стал, вроде и так идет. Ура ура, пасибо люди. Хотя ща передам по стрингу от греха подальше ))