vb@rchiv
VB Classic
VB.NET
ADO.NET
VBA
C#
Schützen Sie Ihre Software vor Software-Piraterie - mit sevLock 1.0 DLL!  
 vb@rchiv Quick-Search: Suche startenErweiterte Suche starten   Impressum  | Datenschutz  | vb@rchiv CD Vol.6  | Shop Copyright ©2000-2024
 
zurück

 Sie sind aktuell nicht angemeldet.Funktionen: Einloggen  |  Neu registrieren  |  Suchen

Visual-Basic Einsteiger
mehrdimensionales 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
Themenbaum einblendenGesamtübersicht  |  Zum Thema  |  Suchen

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

Themenbaum einblendenGesamtübersicht  |  Zum Thema  |  Suchen

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....
Themenbaum einblendenGesamtübersicht  |  Zum Thema  |  Suchen

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

Themenbaum einblendenGesamtübersicht  |  Zum Thema  |  Suchen

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
Themenbaum einblendenGesamtübersicht  |  Zum Thema  |  Suchen

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

Themenbaum einblendenGesamtübersicht  |  Zum Thema  |  Suchen

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
Themenbaum einblendenGesamtübersicht  |  Zum Thema  |  Suchen

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.





Themenbaum einblendenGesamtübersicht  |  Zum Thema  |  Suchen

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
Themenbaum einblendenGesamtübersicht  |  Zum Thema  |  Suchen

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.
Themenbaum einblendenGesamtübersicht  |  Zum Thema  |  Suchen

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....
Themenbaum einblendenGesamtübersicht  |  Zum Thema  |  Suchen

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 & " "
Themenbaum einblendenGesamtübersicht  |  Zum Thema  |  Suchen

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?
Themenbaum einblendenGesamtübersicht  |  Zum Thema  |  Suchen

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.
Themenbaum einblendenGesamtübersicht  |  Zum Thema  |  Suchen

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.
Themenbaum einblendenGesamtübersicht  |  Zum Thema  |  Suchen

Re: mehrdimensionales Feld ausgeben 
Autor: jopeku
Datum: 22.05.15 23:43

@Manfred

Nun ist perfekt!!!



Grüße und ein schönes Pfingstfest
Themenbaum einblendenGesamtübersicht  |  Zum Thema  |  Suchen

Re: mehrdimensionales Feld ausgeben 
Autor: Unsamin
Datum: 25.05.15 12:30

Haha, ich glaube, Ihre Frage ist sehr schwierig, kann ich nicht beantworten.
Themenbaum einblendenGesamtübersicht  |  Zum Thema  |  Suchen

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

Funktionen:  Zum Thema  |  GesamtübersichtSuchen 

nach obenzurück
 
   

Copyright ©2000-2024 vb@rchiv Dieter Otter
Alle Rechte vorbehalten.
Microsoft, Windows und Visual Basic sind entweder eingetragene Marken oder Marken der Microsoft Corporation in den USA und/oder anderen Ländern. Weitere auf dieser Homepage aufgeführten Produkt- und Firmennamen können geschützte Marken ihrer jeweiligen Inhaber sein.

Diese Seiten wurden optimiert für eine Bildschirmauflösung von mind. 1280x1024 Pixel