ERLEDIGT
NEIN
NEIN
ANTWORTEN
10
10
ZUGRIFFE
1495
1495
EMPFEHLEN
-
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."
-
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)
-
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."
-
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
-
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."
-
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:
musst du entsprechend auch den ReDim ändern:Code :1 2
Dim messageArray() As Long ReDim messageArray(1 to 1)
Code :1
ReDim Preserve messageArray(1 to UBound(messageArray) + 1)
-
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."
-
13.02.06 13:49 #8
- 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.
-
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."
-
"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)
-
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
-
Array-Problem
Von flashsi im Forum Flash PlattformAntworten: 6Letzter Beitrag: 15.04.08, 23:01 -
Array Problem
Von sabato im Forum Javascript & AjaxAntworten: 6Letzter Beitrag: 26.05.04, 17:30 -
Problem mit array und IF
Von IoNsTrEaM im Forum PHPAntworten: 2Letzter Beitrag: 19.07.03, 21:14 -
Problem mit Array-Key
Von Flo[H] im Forum PHPAntworten: 4Letzter Beitrag: 20.12.02, 17:17 -
Problem mit Array...
Von mrsunshine im Forum PHPAntworten: 3Letzter Beitrag: 15.07.02, 20:21





Zitieren
Login





