tutorials.de Buch-Aktion 05/2012
ERLEDIGT
NEIN
ANTWORTEN
10
ZUGRIFFE
1495
EMPFEHLEN
  • An Twitter übertragen
  • An Facebook übertragen
AUF DIESES THEMA
ANTWORTEN
  1. #1
    Avatar von sunstyle
    sunstyle sunstyle ist offline Mitglied Silber
    Registriert seit
    Jan 2003
    Ort
    Halle
    Beiträge
    50
    Halloah!

    Ich habe folgendes Problem;

    Ich deklariere beim laden meines Form2 ein Array:

    Code :
    1
    2
    
        Dim messageArray As Long
        ReDim messageArray(1 To 1)

    Sobald ich auf einen Button klicke wird eine MySQL Abfrage durchgeführt und eine ListBox mit deren Ergebnis (Der name der Nachricht) gefüttert, wobei jede Zeile der ListBox ebenfalls einen index mit i erhält.
    Gleichzeitig fülle ich das Array messageArray mit der ID der Nachrichten und dem dazugehörigen i.

    Soll heißen ich möchte folgendes verwirklichen:

    Eine ListBox die Nachrichten aufzählt mit deren Titel.
    Ein Array dass die IDs der Nachrichten enthält.

    Beides wird durch die Zahl i "verbunden".

    Wenn ich nun auf einen Eintrag der ListBox Doppelklicke soll mir eine Messagebox ausgeben wie die ID der Nachricht lautet.

    Das versuch ich folgendermaßen:

    Code :
    1
    2
    3
    4
    5
    6
    7
    8
    9
    
    Private Sub List1_DblClick()
     
        If List1.SelCount <> 0 Then
            
            MsgBox (messageArray(List1.ListIndex))
                    
        End If
     
    End Sub

    Allerdings liefert er mir ein leeres Ergebnis zurück, keine ID, nichts.

    Aber wieso ist das so? Ist meine Methode überhaupt sinnvoll? Weil ich keine andere Idee hatte. Bin noch nicht so versiert in Visual Basic und konnte daher nichts mit dem Tipp eines Freundes anfangen doch Klassen zu benutzen (er sagte mir nur "Nimm doch Klassen", aber erklären konnte er mir nicht wie, denn er hat dafür keine Zeit (...))
    Daher wär ich euch dankbar wenn wirs bei dieser Methode belassen können.

    Ich nehme an dass mein Array einfach nicht übergeben wird, bzw. dessen Inhalt.

    So, ich hoffe auf eure Unterstützung.
     
    "Erfolg ist die Fähigkeit, von einem Misserfolg zum anderen zu gehen,
    ohne seine Begeisterung zu verlieren." (Winston Churchill)

    "Es gibt nur 10 Gruppen von Menschen, diejenigen, die was
    von Binärzahlen verstehen und diejenigen, die es nicht tun."

  2. #2
    ltPerly ltPerly ist offline Mitglied Bronze
    Registriert seit
    Feb 2006
    Beiträge
    30
    Also zuerst deklarierst du ein Array:

    Code :
    1
    2
    
    Dim messageArray As Long
    ReDim messageArray(1)

    Als nächstes musst du jedes mal, wenn ein Element dazu kommt, das Array erweitern (außer du weißt von Anfang an wie viele Elemente du hast)
    Code :
    1
    
    ReDim Preserve messageArray(UBound(messageArray)+1)

    Durch den Zusatz "Preserve" sorgst du dafür, dass die älteren Elemente nicht gelöscht werden.
    Geändert von ltPerly (13.02.06 um 12:30 Uhr)
     

  3. #3
    Avatar von sunstyle
    sunstyle sunstyle ist offline Mitglied Silber
    Registriert seit
    Jan 2003
    Ort
    Halle
    Beiträge
    50
    Ja, das habe ich so auch gemacht, das Array wird ja auch gefüttert, nur wenn ich es dann bei meinem Doppelklick wieder aufrufen will (z.b. halt messageArray(3)) dann kommt ein leeres Ergebnis.

    Mittlerweile kommt aus unerklärlichen Gründen folgender Fehler beim Starten des Programmes;

    "Expected Array" und der Mauszeiger springt auf die Zeile

    "ReDim messageArray(1)"

    Es ist zum verzweifeln.
     
    "Erfolg ist die Fähigkeit, von einem Misserfolg zum anderen zu gehen,
    ohne seine Begeisterung zu verlieren." (Winston Churchill)

    "Es gibt nur 10 Gruppen von Menschen, diejenigen, die was
    von Binärzahlen verstehen und diejenigen, die es nicht tun."

  4. #4
    ltPerly ltPerly ist offline Mitglied Bronze
    Registriert seit
    Feb 2006
    Beiträge
    30
    OK, den Array-Fehler hab ich auch gemacht ... Klammern vergessen:

    Code :
    1
    2
    
    Dim messageArray() As Long
    ReDim messageArray(1)

    Hast du das Array auch global definiert? Ein anderer Fehler würde mir spontan nicht einfallen, wenn das Array gefüllt wird, aber gerade in der DblClick-Funktion leer ist
     

  5. #5
    Avatar von sunstyle
    sunstyle sunstyle ist offline Mitglied Silber
    Registriert seit
    Jan 2003
    Ort
    Halle
    Beiträge
    50
    Okay das hätte ich auch selber sehen können, mist.

    Nächstes Problem: Bei der Zeile: "ReDim Preserve messageArray(UBound(messageArray) + 1)"

    kommt der Fehler: "Invalid ReDim".
     
    "Erfolg ist die Fähigkeit, von einem Misserfolg zum anderen zu gehen,
    ohne seine Begeisterung zu verlieren." (Winston Churchill)

    "Es gibt nur 10 Gruppen von Menschen, diejenigen, die was
    von Binärzahlen verstehen und diejenigen, die es nicht tun."

  6. #6
    ltPerly ltPerly ist offline Mitglied Bronze
    Registriert seit
    Feb 2006
    Beiträge
    30
    Hast du die Deklaration auch genauso geschrieben wie ich? Wenn du das hier am Anfang stehen hast, müsste es gehen:
    Code :
    1
    2
    
    Dim messageArray() As Long
    ReDim messageArray(1)


    ... wenn du das hier stehen hast:
    Code :
    1
    2
    
    Dim messageArray() As Long
    ReDim messageArray(1 to 1)
    musst du entsprechend auch den ReDim ändern:
    Code :
    1
    
    ReDim Preserve messageArray(1 to UBound(messageArray) + 1)
     

  7. #7
    Avatar von sunstyle
    sunstyle sunstyle ist offline Mitglied Silber
    Registriert seit
    Jan 2003
    Ort
    Halle
    Beiträge
    50
    Ja, ich habs so dastehen wie du es vorgegeben hast.
    es kommt der Fehler "Invalid ReDim".
     
    "Erfolg ist die Fähigkeit, von einem Misserfolg zum anderen zu gehen,
    ohne seine Begeisterung zu verlieren." (Winston Churchill)

    "Es gibt nur 10 Gruppen von Menschen, diejenigen, die was
    von Binärzahlen verstehen und diejenigen, die es nicht tun."

  8. #8
    Nirraven Nirraven ist offline Mitglied Brokat
    Registriert seit
    Nov 2003
    Ort
    Tecklenburg (NRW)
    Beiträge
    258
    Hi, kannst du mal bitte einen größeren codeschnipsel liefern? weil ich kann dein Problem so nicht nachvollziehen, bei mir klappts.
     

  9. #9
    Avatar von sunstyle
    sunstyle sunstyle ist offline Mitglied Silber
    Registriert seit
    Jan 2003
    Ort
    Halle
    Beiträge
    50
    Ja, das ganze sieht folgendermaßen aus:

    Code :
    1
    2
    3
    4
    5
    6
    7
    8
    9
    
    Sub Form_Load()
        
        Dim i As Integer
        Dim variable1 As String * 100
        Dim variable2 As Long
        Dim messageArray() As Long
        ReDim messageArray(1)
        
    End Sub

    Code :
    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
    
    Private Sub Image2_Click()
        
        List1.Clear
        i = 0
     
            connect
            sSQL = "select messagetopic,messageid from fw_messages where usertoid = '" & Image1.Tag & "'"
            Set oRs = oConn.Execute(sSQL)
            If oConn.Error.Number = 0 Then
            While Not oRs.EOF
            variable1 = oRs.Fields(0).Value
            variable2 = oRs.Fields(1).Value
                    
            List1.AddItem variable1, i
            ReDim Preserve messageArray(i)
            messageArray(i) = variable2
            i = i + 1
                    
            oRs.MoveNext
            Wend
            If variable1 > 0 Then
            List1.Visible = True
            Else
            List1.Visible = False
            Label2.Visible = True
            Label2.Caption = "- Keine Nachrichten vorhanden -"
            End If
            Else
            MySQL_Error
            End If
            oConn.CloseConnection
            Exit Sub
                
    End Sub

    Code :
    1
    2
    3
    4
    5
    6
    7
    8
    9
    
    Private Sub List1_DblClick()
     
        If List1.SelCount <> 0 Then
            
            MsgBox (messageArray(List1.ListIndex))
            
        End If
     
    End Sub

    Wenn ich jetzt auf den button zum Abfragen drücke kommt bei mir die Meldung "Variable not defined" und es springt auf die Zeile "ReDim Preserve messageArray(i)"
     
    "Erfolg ist die Fähigkeit, von einem Misserfolg zum anderen zu gehen,
    ohne seine Begeisterung zu verlieren." (Winston Churchill)

    "Es gibt nur 10 Gruppen von Menschen, diejenigen, die was
    von Binärzahlen verstehen und diejenigen, die es nicht tun."

  10. #10
    ltPerly ltPerly ist offline Mitglied Bronze
    Registriert seit
    Feb 2006
    Beiträge
    30
    "Variable not defined" ist ja schonmal eine schönere Fehlermeldung.

    Wie ich bereits sagte musst du die Variablen global deklarieren. Alles, was du im Form_Load als Variable dimensionierst, dürfte in deiner Click-Prozedur schon nicht mehr vorhanden sein.

    Globale Variablen werden außerhalb aller Prozeduren deklariert - also quasi direkt nach "Option Explicit"
    (falls du das nicht automatisch drin hast, würd ich das immer als erste Zeile schreiben)
     

  11. #11
    Avatar von sunstyle
    sunstyle sunstyle ist offline Mitglied Silber
    Registriert seit
    Jan 2003
    Ort
    Halle
    Beiträge
    50
    Ja okay, es funktioniert, mal ne andere Frage.

    Kann ich irgendwie überprüfen ob ein bestimmtes Formular bereits offen ist, also ob der Befehl Form3.Show sozusagen bereits ausgeführt wurde? Weil ich für den Fall dass das Form schon offen ist ein Form3.refresh machen will, das wäre doch sinnvoll oder gibts da ne andere Möglichkeit?
     
    "Erfolg ist die Fähigkeit, von einem Misserfolg zum anderen zu gehen,
    ohne seine Begeisterung zu verlieren." (Winston Churchill)

    "Es gibt nur 10 Gruppen von Menschen, diejenigen, die was
    von Binärzahlen verstehen und diejenigen, die es nicht tun."

Ähnliche Themen

  1. Array-Problem
    Von flashsi im Forum Flash Plattform
    Antworten: 6
    Letzter Beitrag: 15.04.08, 23:01
  2. Array Problem
    Von sabato im Forum Javascript & Ajax
    Antworten: 6
    Letzter Beitrag: 26.05.04, 17:30
  3. Problem mit array und IF
    Von IoNsTrEaM im Forum PHP
    Antworten: 2
    Letzter Beitrag: 19.07.03, 21:14
  4. Problem mit Array-Key
    Von Flo[H] im Forum PHP
    Antworten: 4
    Letzter Beitrag: 20.12.02, 17:17
  5. Problem mit Array...
    Von mrsunshine im Forum PHP
    Antworten: 3
    Letzter Beitrag: 15.07.02, 20:21