Visual Basic, .NET, ASP, VBScript
 

   
   
     

Форум - VBA

Страница: 1 |

 

  Вопрос: задать массив объектов или элементов User Type Добавлено: 27.11.07 05:51  

Автор вопроса:  night-roll
необходимо задать массив объектов или элементов User Type в строгой определённости

Ответить

  Ответы Всего ответов: 9  

Номер ответа: 1
Автор ответа:
 Nytrogen



Вопросов: 18
Ответов: 186
 Профиль | | #1 Добавлено: 27.11.07 14:44
Так, что ли?

Option Explicit
Option Base 1

Type Person
  Name As String
  Surname As String
  Age As Byte
End Type

Dim TheGroup(3) As Person

Sub FillTheGroup()

  With TheGroup(1)
    .Name = "Vasja"
    .Surname = "Pupkin"
    .Age = 99
  End With

  With TheGroup(2)
    '...
  End With

  With TheGroup(3)
    '...
  End With

End Sub

Ответить

Номер ответа: 2
Автор ответа:
 night-roll



Вопросов: 36
Ответов: 326
 Профиль | | #2 Добавлено: 01.12.07 20:20
а как потом по свойству вычислить элемент(объект)?
так что ли (рекурсией)?

Type Person
  Name As String
  Surname As String
  Age As Byte
End Type

Sub FillTheGroup()
Dim TheGroup(3) As Person
Dim Index As Long ' счётчик
Dim strRet As String
  
  strRet = "Vasja"

  For Index=0 To TheGroup.Count
    With TheGroup(Index)
      If .Name = "Vasja" Then Exit For
    End With
  Next Index

End Sub

Ответить

Номер ответа: 3
Автор ответа:
 Mr.Smile



ICQ: 427682013 

Вопросов: 14
Ответов: 464
 Профиль | | #3 Добавлено: 02.12.07 21:47
TheGroup.Count - работает??!
Private Type Person
  Name As String
  Surname As String
  Age As Byte
End Type

Sub FillTheGroup()
    Dim TheGroup(3) As Person
    Dim Index As Long ' счётчик
    Dim strRet As String
       
    strRet = "VasJa"
    TheGroup(2).Name = strRet
    
    For Index = LBound(TheGroup()) To UBound(TheGroup()) ' знакомтесь, LBound и UBound, нижняя и верхняя границы массивов
        With TheGroup(Index)
            If LCase$(.Name) = LCase$(strRet) Then ' LCase$ - независимо от регистра (перевод в нижний)
                MsgBox "Запись " & Index & ", Name = " & strRet
                Exit For
            End If
        End With
    Next Index

End Sub

Ответить

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



Вопросов: 18
Ответов: 186
 Профиль | | #4 Добавлено: 02.12.07 22:08
Верно, у массивов нет свойства Count. Надо бы перебирать от нижней границы до верхней...

Да и лучше бы функцию написать, что-то типа ElemIndex(theArray As Variant) As Long.

Ответить

Номер ответа: 5
Автор ответа:
 Mr.Smile



ICQ: 427682013 

Вопросов: 14
Ответов: 464
 Профиль | | #5 Добавлено: 02.12.07 22:52
Надо бы перебирать от нижней границы до верхней...
Nytrogen, ты код приведенный мной в 3 ответе читал?
    For Index = LBound(TheGroup()) To UBound(TheGroup())
Это по-твоему что?

Ответить

Номер ответа: 6
Автор ответа:
 Nytrogen



Вопросов: 18
Ответов: 186
 Профиль | | #6 Добавлено: 03.12.07 17:50
Это по-твоему что?


Блина, ну я и говорю, что "верно, надо перебирать"...

Ответить

Номер ответа: 7
Автор ответа:
 Mr.Smile



ICQ: 427682013 

Вопросов: 14
Ответов: 464
 Профиль | | #7 Добавлено: 03.12.07 19:53
"надо бы ..." означает что это еще не было приведено ранее =)

Ответить

Номер ответа: 8
Автор ответа:
 Mr.Smile



ICQ: 427682013 

Вопросов: 14
Ответов: 464
 Профиль | | #8 Добавлено: 03.12.07 19:54
"надо бы ..." означает что это еще не было приведено ранее =)

Ответить

Номер ответа: 9
Автор ответа:
 night-roll



Вопросов: 36
Ответов: 326
 Профиль | | #9 Добавлено: 10.12.07 18:55
зачем оффтопить? был задан конкретный вопрос, и получен ответ! СПАСИБО! to Nytrogen!
TheGroup.Count - написано для балды! (неохота код было расписывать) суть, ведь, понятна! важен алгоритм, а не код! рекурсия форева!!! мать её так!

Ответить

Страница: 1 |

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



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