| |
Visual-Basic Einsteigermehrdimensionales Feld ausgeben | | | Autor: jopeku | Datum: 22.05.15 18:58 |
| Hallo - ich war ewig nicht hier
und habe fals alles vergessen was man so über VB6 wissen muss
Nun versuche ich mich wieder etwas einzuarbeiten... meine Frage:
Ich habe ein mehrdimensionales Feld z.B. mit dem Inhalt
Feld(0,0)=a ; Feld(0,1)=10
Feld(1,0)=b ; Feld(1,1)=20
Feld(2,0)=c ; Feld(2,1)=30
Diesen Inhalt möchte ich nun zusammen entweder in einer Listbox und/oder
in einem Textfeld ausgeben......
Das Ganze möchte ich natürlich über eine Schleife erledigen:
For K=0 to 10
????
Next K
Sorry für so eine einfache Frage aber ich bin viele Jahre aus dem Thema raus.
Danke für die Hilfe | |
Re: mehrdimensionales Feld ausgeben | | | Autor: Zardoz | Datum: 22.05.15 21:19 |
| Hallo jopeku,
um ein mehrdimensionales Array auszulesen, brauchst du so viele
Schleifen, wie das Array Dimensionen hat:
Dim i As Long, j As Long
For i = LBound(Feld, 1) To UBound(Feld, 1)
For j = LBound(Feld, 2) To UBound(Feld, 2)
Debug.Print CStr(Feld(i, j))
Next j
Next i Gruss,
Zardoz | |
Re: mehrdimensionales Feld ausgeben | | | Autor: jopeku | Datum: 22.05.15 21:29 |
| Guten Abend @Zardoz
da habe ich mich etwas unglücklich ausgedrückt
Das Auslesen der Schleifen klappt ja gut, nur wie ich die Werte in
einer Textbox bzw. List Element dann anzeigen lasse, dass gelingt
mir leider nicht.... | |
Re: mehrdimensionales Feld ausgeben | | | Autor: Zardoz | Datum: 22.05.15 21:46 |
| Hallo jopeku,
für eine Listbox ersetze in meinem Beispiel die Zeile mit Debug durch:
List1.AddItem CStr(Feld(i, j)) Bei einer Textbox Multiline zur Entwurfszeit auf True stellen, Scrollbars
auf Vertikal und dieser Code:
Dim Txt As String
Txt = ""
For i = LBound(Feld, 1) To UBound(Feld, 1)
For j = LBound(Feld, 2) To UBound(Feld, 2)
Txt = Txt & CStr(Feld(i, j)) & vbCrLf
Next j
Next i
Text1.Text = Txt Gruss,
Zardoz | |
Re: mehrdimensionales Feld ausgeben | | | Autor: jopeku | Datum: 22.05.15 21:56 |
| nochmal ich
@Zardoz
Danke für deine Hilfe...aber:
In dem ersten Beispiel der Listbox, ercheinen nur die 1. Werte des Felder also
im Beispiel oben:
a
b
c
im 2. Beispiel werden die Werte untereinander geschrieben (Textbox):
a
10
b
20
c30
In der Listbox wäre es natürlich schön, wenn beide Werte nebeneinander
ausgegeben werden können, auch in der Textbox:
a 10
b 20
c 30
Grüße
| |
Re: mehrdimensionales Feld ausgeben | | | Autor: Zardoz | Datum: 22.05.15 22:07 |
| Hallo jopeku,
erweitere den Code mal so:
' für TextBox
Dim Txt As String
Txt = ""
For i = LBound(Feld, 1) To UBound(Feld, 1)
For j = LBound(Feld, 2) To UBound(Feld, 2)
Txt = Txt & Feld(i, j) & " "
Next j
Txt = Txt & vbCrLf
Next i
Text1.Text = Txt Gruss,
Zardoz | |
Re: mehrdimensionales Feld ausgeben | | | Autor: jopeku | Datum: 22.05.15 22:20 |
| @Zardoz
Ich wupßte hier wird mir geholfen
Mit der Textbox klappt nun prima und ich bin soweit zufrieden.
Zwar muß ich noch etwas an den Abständen zwischen den angezeigten Werten arbeiten,
da der Abstand zwischen den Werten sich ja immer nach der Länge des 1. Wertes richtet
und die ganze Anzeige dadurch etwas "flatterig" erschein.
Aber grundstzlich ist es eine gute Lösung!
Nun kann Pfingsten kommen^^
Beste Grüße
Jopeku | |
Re: mehrdimensionales Feld ausgeben | | | Autor: Manfred X | Datum: 22.05.15 22:29 |
| Hallo!
Füge einen Tabulatorschritt zwischen den übertragenen Array-Elementen ein (vbTab).
Oder frage die Länge der einzelnen Feldelemente ab und füge jeweils die erforderliche
Anzahl "Spaces" (" ") ein, um eine vorgegebene String-Länge zu erreichen.
Du solltest in dem Fall als "Font" der Textbox eine Nicht-Proportionalschrift verwenden.
| |
Re: mehrdimensionales Feld ausgeben | | | Autor: jopeku | Datum: 22.05.15 22:31 |
| @Manfred
Das mit dem "vbTab" habe ich mir auch gerade überlegt, die 1. Werte mit "Space" aufzufüllen
daran knoble ich gerade | |
Re: mehrdimensionales Feld ausgeben | | | Autor: Manfred X | Datum: 22.05.15 22:41 |
| z.B. rechtsbündig eine einheitliche Länge herstellen
Const FieldLength As Integer = 12
Dim x As String
x = "abcde"
Dim l As Integer
l = Len(x)
If l < FieldLength Then
x = Space(FieldLength - l) & x
End If Schau auch mal diesen Tipp an (Liste):
http://www.vbarchiv.net/tipps/details.php?id=1130
Oder nutze z.B. ein ListView-Control.
Beitrag wurde zuletzt am 22.05.15 um 22:57:36 editiert. | |
Re: mehrdimensionales Feld ausgeben | | | Autor: jopeku | Datum: 22.05.15 23:01 |
| @Manfred
...da ist der Wurm drin
In dem Code von Zardoz sind ja in der Variablen Txt schon 2 Werte drin
For i = LBound(Feld, 1) To UBound(Feld, 1)
For j = LBound(Feld, 2) To UBound(Feld, 2)
Txt = Txt & Feld(i, j) & " "
Next j
Txt = Txt & vbCrLf
Next i
Text1.Text = Txt
nämlich der 1. Wert a und der 2. Wert 10
Ich müßte also nach dem 1. Wert mit Space auffüllen, was mir
nicht gelingt im Moment.... | |
Re: mehrdimensionales Feld ausgeben | | | Autor: Manfred X | Datum: 22.05.15 23:07 |
| Weise Feld(i,j) auf eine String-Variable ("x") zu
und passe die Länge dieser Variable an
(zu lange Werte eventuell auch abschneiden??).
Danach hängst Du "x" an die Sammelvariable "txt" an.
Txt = Txt & x & " " | |
Re: mehrdimensionales Feld ausgeben | | | Autor: jopeku | Datum: 22.05.15 23:08 |
| Nachtrag:
Gibt es nicht auch eine Lösung mit DBGrid?
Denn im Prinzip möchte ich ja nur eine 2-spaltige Tabelle erzeugen? | |
Re: mehrdimensionales Feld ausgeben | | | Autor: jopeku | Datum: 22.05.15 23:14 |
| @Manfred
Weise Feld(i,j) auf eine String-Variable ("x") zu
und passe die Länge dieser Variable an
(zu lange Werte eventuell auch abschneiden??).
Danach hängst Du "x" an die Sammelvariable "txt" an.
...das habe ich nun nicht verstanden.....
Beitrag wurde zuletzt am 22.05.15 um 23:15:22 editiert. | |
Re: mehrdimensionales Feld ausgeben | | | Autor: Manfred X | Datum: 22.05.15 23:29 |
| Hier ein Beispiel für die Verwendung eines ListView-Controls.
Du benötigst einen Projekt-Verweis auf die
Komponente "Microsoft Windows Common Controls 6".
Ziehe ein Listview-Control auf das Formular (ListView1).
Private Sub ListDemo()
Dim rows%, columns%
rows = 5: columns = 3 'Anzahl der Zeilen und Spalten (=Arraygrenzen)
'Array erstellen und mit Testdaten füllen
ReDim arr(1 To rows, 1 To columns) As String
Dim i, k As Integer
For i = 1 To rows
For k = 1 To columns
arr(i, k) = String(i, "a") & String(k, "b")
Next k
Next i
ListView1.View = lvwReport
'Spaltenköpfe erstellen
ListView1.ColumnHeaders.Add , , "Zeile", 2000
For i = 1 To columns
ListView1.ColumnHeaders.Add , , "SP" & CStr(i), 2000
Next i
'Array-Elemente in Listview1 eintragen
Dim lvi As ListItem
For i = 1 To rows
Set lvi = ListView1.ListItems.Add(, , "Zeile" & CStr(i))
For k = 1 To columns
lvi.ListSubItems.Add , , arr(i, k)
Next k
Next i
End Sub
Beitrag wurde zuletzt am 22.05.15 um 23:30:25 editiert. | |
Re: mehrdimensionales Feld ausgeben | | | Autor: jopeku | Datum: 22.05.15 23:43 |
| @Manfred
Nun ist perfekt!!!
Grüße und ein schönes Pfingstfest | |
Re: mehrdimensionales Feld ausgeben | | | Autor: Unsamin | Datum: 25.05.15 12:30 |
| Haha, ich glaube, Ihre Frage ist sehr schwierig, kann ich nicht beantworten. | |
| Sie sind nicht angemeldet! Um auf diesen Beitrag zu antworten oder neue Beiträge schreiben zu können, müssen Sie sich zunächst anmelden.
Einloggen | Neu registrieren |
|
|
sevISDN 1.0
Überwachung aller eingehender Anrufe!
Die DLL erkennt alle über die CAPI-Schnittstelle eingehenden Anrufe und teilt Ihnen sogar mit, aus welchem Ortsbereich der Anruf stammt. Weitere Highlights: Online-Rufident, Erkennung der Anrufbehandlung u.v.m. Weitere InfosTipp des Monats Neu! sevEingabe 3.0
Einfach stark!
Ein einziges Eingabe-Control für alle benötigten Eingabetypen und -formate, inkl. Kalender-, Taschenrechner und Floskelfunktion, mehrspaltige ComboBox mit DB-Anbindung, ImageComboBox u.v.m. Weitere Infos
|