Как получить название ключа в коллекции - VB

Узнай цену своей работы

Формулировка задачи:

Делаю свой класс который бы, имитировал класс Scripting.Dictionary остановился на функции возврата списка имен ключей где я тут чего не доглядел, где что упустил ?

Модуль класса

Листинг программы
  1. Option Explicit
  2. Private CL As Collection
  3. Function Keys()
  4. 'Вот тут я остановился
  5. ' Dim f&, v, v1
  6. ' ReDim v(CL.Count - 1)
  7. ' For Each v1 In CL
  8. ' v(f) = CL(f + 1)
  9. ' f = f + 1
  10. ' Next
  11. End Function
  12. Public Sub Add(Key$, Item)
  13. CL.Add Item, Key
  14. End Sub
  15. Function Exists(Key) As Boolean
  16. On Error Resume Next
  17. Call CL.Item(Key)
  18. If Err.Number Then Else Exists = True
  19. End Function
  20. Function Items() As Variant()
  21. Dim f&, v, v1
  22. ReDim v(CL.Count - 1)
  23. For Each v1 In CL
  24. v(f) = v1
  25. f = f + 1
  26. Next
  27. End Function
  28. Private Sub Class_Initialize()
  29. Set CL = New Collection
  30. End Sub
  31. Private Sub Class_Terminate()
  32. Set CL = Nothing
  33. End Sub

Решение задачи: «Как получить название ключа в коллекции»

textual
Листинг программы
  1. Private Function ColItem(Key As String, Col As Collection) As Variant
  2.     Dim lpStr As Long, Ptr1 As Long, Ptr2 As Long, sKey As String
  3.  
  4.     GetMem4 ByVal ObjPtr(Col) + 36, Ptr1
  5.     GetMem4 ByVal ObjPtr(Col) + 40, Ptr2
  6.  
  7.     Do Until Ptr1 = Ptr2
  8.         GetMem4 ByVal Ptr1 + 16, lpStr
  9.         Select Case VarBstrCmp(ByVal StrPtr(Key), ByVal lpStr, 1, &H30001)
  10.         Case 0: GetMem4 ByVal Ptr1 + 40, Ptr1
  11.         Case 1
  12.             Ptr2 = VarPtr(ColItem)
  13.             GetMem8 ByVal Ptr1, ByVal Ptr2
  14.             GetMem8 ByVal Ptr1 + 8, ByVal Ptr2 + 8
  15.             Exit Function
  16.         Case Else: GetMem4 ByVal Ptr1 + 36, Ptr1
  17.         End Select
  18.     Loop
  19.    
  20.     MsgBox "Element not found"
  21. End Function

ИИ поможет Вам:


  • решить любую задачу по программированию
  • объяснить код
  • расставить комментарии в коде
  • и т.д
Попробуйте бесплатно

Оцени полезность:

5   голосов , оценка 3.6 из 5

Нужна аналогичная работа?

Оформи быстрый заказ и узнай стоимость

Бесплатно
Оформите заказ и авторы начнут откликаться уже через 10 минут
Похожие ответы