Visual Basic, .NET, ASP, VBScript
 

   
   
     

Форум - Общий форум

Страница: 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
А может так?
Dim i as integer

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 наверное. Вообщем, ошибка вот здесь:
Dim i as integer

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, то так должно работать:
Dim i as integer

for i=0 to 100
  lMethod(i).Caption = CStr(object.getArray(i))
next i

Ответить

Номер ответа: 4
Автор ответа:
 Winand



Вопросов: 87
Ответов: 2795
 Web-сайт: winandfx.narod.ru
 Профиль | | #4
Добавлено: 25.09.07 23:25
Имхо абсолютно пофек - что есть lMethod
Главное - что такое caption =)

Ответить

Номер ответа: 5
Автор ответа:
 Winand



Вопросов: 87
Ответов: 2795
 Web-сайт: winandfx.narod.ru
 Профиль | | #5
Добавлено: 25.09.07 23:29
Да и булевы вроде нормально к Caption пределываются.

Возможно вот так надо:
Public Property Get GetArray(index As Integer) As Boolean
  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-сайт: winandfx.narod.ru
 Профиль | | #7
Добавлено: 25.09.07 23:43
Оу, сори=) Я "во-первых" прочитал, а "во-вторых" нет.. почему-то))

Ответить

Номер ответа: 8
Автор ответа:
 Winand



Вопросов: 87
Ответов: 2795
 Web-сайт: winandfx.narod.ru
 Профиль | | #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 изменил как вы и сказали и все пошло. передавать значение как стринг не стал, вроде и так идет. Ура ура, пасибо люди. Хотя ща передам по стрингу от греха подальше :)))

Ответить

Страница: 1 |

Поиск по форуму



© Copyright 2002-2011 VBNet.RU | Пишите нам