Avatar billede Nybegynder
05. februar 2003 - 17:13 Der er 8 kommentarer og
1 løsning

Collection class

Jeg har en Collection class hvordan kan man test om der indsat nogle elementer i Collection. Fordi man kan ikke bruge "col.count > 0" hvis classen er tom.
Avatar billede sjh Nybegynder
05. februar 2003 - 17:32 #1
så brug "col.Count = 0"

Private Sub Form_Load()
Dim col As New Collection
  '--- Her er "cl.Count" = 1
  col.Add "ffff"
  Me.Caption = col.Count

  '--- Her er "cl.Count" = 0
  col.Remove 1
  Me.Caption = col.Count

  If col.Count = 0 Then
    MsgBox "Count er tom"
      Else
    MsgBox "Count er ikke tom"
  End If
End Sub
Avatar billede jespernaur Nybegynder
05. februar 2003 - 17:33 #2
Hvis det er dig selv der har lavet klassen, tror jeg du må have implementeret 'count' forkert. For count=0 virker glimrende i alle de andre Collection's, jeg kender til
Avatar billede sjh Nybegynder
05. februar 2003 - 17:36 #3
a hvad??

er det en "collection" du selv har lavet eller hvad??
Avatar billede Nybegynder
05. februar 2003 - 17:50 #4
Collection har jeg ikke selv lavet det har jeg fået Class Builder til at lave.
Når jeg tester på col.count får jeg en fejlen "<Object variable or With block variable not set>"
Avatar billede jpvj Nybegynder
05. februar 2003 - 18:07 #5
Kan du ikke teste om der er oprettet et objekt i først?

Nu er jeg ikke VB skribent :-) men du må vel have en pointer til det første element?

Kan du ikke teste om pointeren peger på NULL?

JP
Avatar billede sjh Nybegynder
05. februar 2003 - 22:44 #6
kan du ikke paste din "collection" kode så vi kan se hvor fejlen?
Avatar billede Nybegynder
06. februar 2003 - 05:08 #7
Option Explicit
Private mCol As Collection

Public Function Add(obj As clsIndex) As clsIndex
  mCol.Add obj
End Function

Public Function Replace(med As clsIndex, nr As Long) As Boolean

  mCol.Remove nr
  If nr <= mCol.Count Then
    mCol.Add med, , nr
  Else
    mCol.Add med
  End If
 
End Function

Public Property Get Item(vntIndexKey As Variant) As clsIndex
  Set Item = mCol(vntIndexKey)
End Property

Public Property Get Count() As Long
    Count = mCol.Count
End Property

Public Sub Remove(vntIndexKey As Variant)
    mCol.Remove vntIndexKey
End Sub

Public Property Get NewEnum() As IUnknown
    Set NewEnum = mCol.[_NewEnum]
End Property

Private Sub Class_Initialize()
    Set mCol = New Collection
End Sub

Private Sub Class_Terminate()
    Set mCol = Nothing
End Sub
Avatar billede michaelemanuel Nybegynder
06. februar 2003 - 12:33 #8
Du skal teste om mCol overhovedet er oprettet :
If (TypeName(mCol) = "Nothing") Then MsgBox "Count er tom"
Avatar billede Nybegynder
06. februar 2003 - 15:44 #9
Det virker Mange tak Michael
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview
Kategori
Kurser inden for grundlæggende programmering

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester