[VB6] UBound doet vreemd

Pagina: 1
Acties:

Acties:
  • 0 Henk 'm!

  • honda4life
  • Registratie: Januari 2007
  • Laatst online: 19:13
Hallo iedereen, hieronder staat een stukje code uit m'n eindwerk, wat je hoeft te weten is het volgende:

m'n functie krijgt v_objDestPic binnen, dit kan je vergelijken met een pagina, de hele inhoud van de pagina zit in dit object.
Afhankelijk van de "Update" eigenschap wordt er voor dit element plaats voorzien in een array om bepaalde zaken hiervan op te slagen (regel 36 ev), het aanvullen van de array heb ik weg gelaten.

Wat is het rare nu:
Ik plaats een breakpoint op regel 51, wat heb ik, de array is nog leeg, ik plaats dat geel pijltje terug op regel 1, en laat het programma terug lopen tot aan de breakpoint, m'n array is in orde.
Ik heb zoals je ziet gecontroleerd op regel 10 of v_objDestPic al "aangevuld" is, vervolgens op regel 43 zorg ik ervoor dat ik kijk of ik daadwerkelijk de array wel uitbreidt en dit wordt geprint, maar regel 42 print hij blanco af, oké ik doe in m'n venster direct ?UBound(aObjecten) , dit print hij wel af.
Breid ik de array stap voor stap uit, werkt dit weer wel.
Iemand enig idee wat hier aan de hand is?

Alvast bedankt, het zou een grote hulp zijn

Visual Basic:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
Private Sub CompareObjects(ByVal v_objDestPic As Object)
Dim sVergelijk As String
Dim colTree, colCollection As Collection
Dim iCounterCollection As Integer
Dim varObject As Variant
Dim objObject, objSelectedObject, objNewObject As Object
Dim bUpdate As Boolean
Dim aObjecten() As New clsObject

Debug.Print v_objDestPic.Filename

lstInfo.AddItem ("Scanning " & v_objDestPic.Filename)
lstInfo.SpecialEffect = fmSpecialEffectFlat

On Error GoTo Error
For Each varObject In v_objDestPic.Page.ContainedObjects
    Set colTree = New Collection
    Set colCollection = New Collection
    colTree.Add varObject
    While colTree.Count
        Set objSelectedObject = colTree.Item(1)
        colTree.Remove 1
        For iCounterCollection = 1 To objSelectedObject.ContainedObjects.Count
            Set objNewObject = objSelectedObject.ContainedObjects.Item(iCounterCollection)
            If objNewObject.ContainedObjects.Count > 0 Then
                colTree.Add objNewObject
            Else
                colCollection.Add objNewObject
            End If
        Next
    Wend
    For iCounterCollection = 1 To colCollection.Count
        On Error Resume Next
        bUpdate = False
        If colCollection.Item(iCounterCollection).Category = "Support" Then
            If InStr(1, colCollection.Item(iCounterCollection).name, "Update") <> 0 Then
                If colCollection.Item(iCounterCollection).CurrentValue = True Then
                    bUpdate = True
                    ReDim Preserve aObjecten(UBound(aObjecten) + 1)
                    Set aObjecten(UBound(aObjecten)) = New clsObject
                    Set objObject = aObjecten(UBound(aObjecten))
                    Debug.Print UBound(aObjecten)
                    Debug.Print "Ubound"
                    DoEvents
                    Exit For
                End If
            End If
        End If
    Next
Next
For Each varObject In aObjecten
    bSearchObject varObject, g_objOpenSelectPicture(g_sDevelopDocumentName)
Next

Error:
End Sub

Acties:
  • 0 Henk 'm!

  • TheGrandWazoo
  • Registratie: Januari 2009
  • Laatst online: 22-09 21:01
Moet je niet eerst geheugen alloceren in je dynamische array met Redim (en eventueel Preserve, om de data die er al in staat te bewaren) voordat je het gaat gebruiken?

Acties:
  • 0 Henk 'm!

  • farlane
  • Registratie: Maart 2000
  • Laatst online: 20:04
Ik weet niet of het met je probleem te maken heeft ( het is me niet helemaal duidelijk wat er nu gebeurd ) maar dit:

code:
1
Dim aObjecten() As New clsObject


Heb ik eerlijk gezegd nog nooit gezien, wat maakt hij nu automatisch aan, het array of de objecten in dat array?

Overigens heb je het in beide gevallen niet nodig ( en het wordt zelfs afgeraden ) want je redimmed het array en maakt de objecten expliciet aan. Ik weet niet wat een dergelijke consructie icm Redim doet iig.

Somniferous whisperings of scarlet fields. Sleep calling me and in my dreams i wander. My reality is abandoned (I traverse afar). Not a care if I never everwake.


  • RedRose
  • Registratie: Juni 2001
  • Niet online

RedRose

Icebear

Het is ook wel handig om de
code:
1
 On Error Resume Next

er even uit te slopen.

Sundown Circus