VB6 - UBound Funktion (?)

  • VB6

Es gibt 6 Antworten in diesem Thema. Der letzte Beitrag () ist von PSJ.

    VB6 - UBound Funktion (?)

    Guten Morgen VBP-Community :) ,

    ich habe derzeit ein kleines Problemchen mit der UBound Funktion in VB6.
    Oder eben auch nicht, da ich sie nicht verwenden kann.

    Ist UBound / LBound eine von Haus aus Mitgelieferte Funktion oder muss ich sie erst selbst zuweisen ?
    Laut msdn.microsoft.com/en-us/library/95b8f22f(v=vs.90).aspx ist es schonmal nicht nötig einen Verweis hinzu zufügen, sehe ich das richtig ?

    Das eigenartige ist, ich könnte schwören vor einiger Zeit die UBound() Funktion selbst noch genutzt zu haben, jetzt jedoch existiert sie für mich gar nicht erst.

    Mit freundlichen Grüßen

    PSJ

    //Edit Link entfernt aufgrund falscher VB-Bezugsversion

    Dieser Beitrag wurde bereits 1 mal editiert, zuletzt von „PSJ“ ()

    Mein Problem hat sich soeben sowieso erledigt.
    Mein Fehler war das ich ein Array ohne festgelegte Größe mit UBound überprüfen wollte, was leider nicht so funktioniert wie ich mir das vorgestellt habe.

    Gibt es eine Möglichkeit die Größe eines Arrays herauszufinden, dessen Größe NICHT vorher definiert wurde ?
    Die Möglichkeit mit durchschleifen bis ein Error kommt und diesen mit On Error.. abzufangen hab ich schon mal in betracht gezogen, finde ich persönlich aber recht unsauber.

    //EDIT

    Hab einen für mich Aktzeptablen weg gefunden und wohl nur durch meine Morgenschusseligkeit nicht auf diese Methode gekommen. Und habe mein Problem somit gelöst.

    Dieser Beitrag wurde bereits 1 mal editiert, zuletzt von „PSJ“ ()

    Positiv, ganz auf den Kopf gefallen bin ich auch nicht. :)

    Mein Problem war, dass ich bei einem Array ohne festgelegte Größe mit nur einem zugewiesenen Wert UBound(array) benutzen wollte, was eigentlich nur für mich zum Test dienen sollte. Das Problem ist, dass UBound jedoch erst ab 2 Werten Funktioniert.

    Habe es aber ja noch selbst herausgefunden und gemerkt das ich den Thread hier zu schnell aufgemacht habe.
    Was war jetzt denn genau das Problem (leider hast du deine Lösung nicht gepostet)?

    UBound funktioniert doch tadelos mit Arrays variabler Größe und auch mit nur einem Wert im Array. Es funktioniert nur OHNE Werte nicht. Ich mache das daher so:

    Visual Basic-Quellcode

    1. Public Function GetUBound(ByVal varArray As Variant) As Long
    2. ' UBound ermitteln, ohne einen Laufzeitfehler zu riskieren
    3. Dim lngUbound As Long
    4. On Local Error Resume Next
    5. lngUbound = UBound(varArray)
    6. If Err.Number <> 0 Then
    7. GetUBound = -1
    8. Else
    9. GetUBound = lngUbound
    10. End If
    11. Err.Clear
    12. On Local Error GoTo 0
    13. End Function
    Besucht auch mein anderes Forum:
    Das Amateurfilm-Forum
    Gab keinen weiteren Lösungsweg da der Fehler darin lag das ich in meinen Tests dem Array keinen bzw. nur einen Wert zugewiesen habe. Das Ziel welches ich mit dem UBound jedoch verfolge ist eigentlich in einer Funktion zum zusammensetzen von SQL´s die Anzahl der Tabellen auf welche Zugegriffen werden zu zählen, und wenn nötig die richtige Menge an Joins zu vollführen.

    Da sich das jedoch erledigt hat und nur eine kleine Spielerei ist die in Zukunft irgendwann einmal fortgesetzt wird falls wieder Interesse daran besteht.