vb6, wenn die For-Each-Schleife, WIE kann ich die Variablen zuweisen
Das problem, das ich habe ist, ersuche ich um ein WMI-Abfrage in VB 6 für Modem-Namen & Ports
Ich habe eine FOR EACH-SCHLEIFE, und es ist mehr als 1 Wert für jede (2 Ports, also ich habe 2 Werte für jeden). Wie kann ich einer Variablen zuweisen, so kann ich zuordnen, um ein Label oder eine TextBox?
Ich würde gerne ein VB 6 code-Beispiel, wie man einer Variablen zuweisen, durch die Schleife und wie nennen Sie die variable?
Dies ist mein code (wenn ich mit MsgBox kann ich es sehen, es öffnet sich nur zweimal getrennt, aber ich möchte Variablen, so kann ich Ihnen zuweisen)
For Each objItem In colItems
MsgBox ("Test -" & objItem.Name)
Next
Ich habe versucht, und ich bekomme eine Nummer, aber ich weiß nicht, wie Referenz es
For Each objItem In colItems
Dim myCount
myCount = myCount + 1
Debug.Print objItem.Name & myCount '** i just tested with Debug.Print
Next
Form1.TextBox1.Text = myCount(1) '** THIS DOES NOT WORK
Form1.TextBox2.Text = myCount(2)
Wie Kann ich zuweisen objItem.Name
(es bringt wieder 2 verschiedene Objekte)? Dies ist, was ich bekomme:
1SAMSUNG Mobile Modem #2
2SAMSUNG Mobile Modem Diagnostic Serial Port (WDM) (COM1)
(die 1 & 2 sind von myCount)
Ohne Verwendung von myCount, nur will ich weisen Sie jeder Wert eine eigene variable.
- Haben Sie sich überlegt mit Listenfeld anstelle von Textfeldern? Bedenken Sie: Was wollen Sie passieren, wenn colItems enthält etwas anderes als 2 Elemente (0, 1, 3, 4, ...)?
- WILL ich WEISEN SIE diese VARIABLEN... so kann ich RE-VERWENDEN Sie Sie, dann, wie würde ich Sie wieder anrufen ? ich weiß, wie ordnen Sie die Textfelder, aber nicht von array-Werten, dass ich weiß nicht,
- So brauchen Sie nicht im Voraus wissen, wie viele modems gibt es und auch Sie nicht wissen, wie viele ports, die jedes modem hat. Sie haben zum erstellen der Labels/Textboxen dynamisch dann. Lesen Sie etwas über die Kontrolle von arrays in VB6. Alternativ verwenden Sie eine ListBox oder TreeView. Es ist nicht so schwer zu finden, selbst, wie dieses problem zu lösen und Sie lernen eine Menge dadurch. Viel Glück!
- zu: Dabblernl, Thx, ich habe einige Beispiele für Control-arrays, und ja, das ist es, was ich brauchte.. und nun bekomme ich es.. 🙂 also thx
- BITTE HÖR AUF, ZU SCHREIEN. Wenn Sie möchten, um zu bestätigen code verwenden backticks (`)
Du musst angemeldet sein, um einen Kommentar abzugeben.
Angenommen, Sie haben 100 oder weniger Objekte, wobei jedes Objekt, das über die 2 Werte, hier ist ein Weg zu speichern ein paar Werte in ein 2 dimensionales array:
Ihrer Beschreibung nehme ich an, dass die .Name-Eigenschaft enthält mehrere Felder, die Sie möchten, lagern Sie Sie getrennt?
Ich weiß nicht, wie die Felder in .Namen sind getrennt, also in dem Beispiel unten habe ich nur halten Sie Leerzeichen getrennt:
Zunächst erstellt er ein array für 32-modems, und am Ende redims das array, um die tatsächliche Größe
Den strField array in jedem udtModem haben verschiedene Längen, je nach der Anzahl der Felder in .Name
Werden Sie wahrscheinlich brauchen eine andere routine zur Aufteilung der Felder .Namen korrekt verwenden, dass routine statt
Split(strName, " ")
Tatsächlich, Sie haben bereits Ihre Daten in eine variable. Diese variable wird benannt colItems.
colItems ist eine variable vom Typ Collection. Sie können mehr über die Kollektionen auf der MSDN-Website.
Wenn Sie wissen, dass Ihre Sammlung enthält 2 Elemente und Ihre Sammlung ist 1-basiert, können Sie Ihre Sammlung wie diese:
oder, wenn Sie wollen, weisen Sie diese Variablen:
Der schwierige Teil ist, dass Sie selten wissen, wie viele Elemente in Ihrer Sammlung enthalten sein wird. In der Regel, der Entwickler der API die du verwendest, gibst du eine Auflistung, denn es gibt keine Möglichkeit zu wissen, wie viele Elemente die Funktion zurückgegeben wird. In solchen Fällen, eine Sammlung ist eine gute Passform.
Wenn du eine collection als Rückgabewert aus einer Funktion, Anzeige es in ein paar Textboxen ist nur selten eine ausreichende Art des Umgangs mit den Daten. Ein listbox-von einer Art ist in der Regel eine bessere Passform. Wenn es einen guten Grund für die Verwendung Textfeld, dann ein control-array von Textfeldern ist eine mögliche Lösung.