Wie erstelle eine große Liste mit Variablen in Visual Basic ?

  • VB.NET

Es gibt 15 Antworten in diesem Thema. Der letzte Beitrag () ist von FloFuchs.

    Wie erstelle eine große Liste mit Variablen in Visual Basic ?

    Hallo Visual-Basic Freunde,

    Ich habe vor kurzem angefangen, Visual Basic zu lernen. Gerade habe ich ein kleines Problem, das für euch bestimmt ganz einfach zu lösen ist, aber mir Kopfschmerzen bereitet und viel Zeit beraubt.
    Es geht um die Herstellung von einer Liste in Visual Basic...
    Darauf bin ich gekommen:

    Quellcode

    1. Sub Liste()
    2. Dim Var As Integer
    3. Var = 0
    4. Do While Var < 5
    5. MsgBox ("Das ist eine Liste" & Var)
    6. Var = Var + 1
    7. Loop
    8. End Sub


    Den Text bekomme ich, aber was ich will ist das alles zusammen rauskommt, damit ich es kopieren kann. d.h:
    Das ist eine Liste 1
    Das ist eine Liste 2
    Das ist eine Liste 3
    Das ist eine Liste 4
    Das ist eine Liste 5

    Mein Text wird viel länger und komplexer, das ist nur ein Beispiel.
    Wie schaffe ich das?

    Vielen Dank
    Warum hast du als Präfix dann VB 2010 gewählt, als du den Thread erstellt hast?
    Wenn ich mich nicht täusche, nutzt du gerade quasi Visual Basic 2002 mit .NET 1.0. Lösch den Ranz und installier dir Visual Basic 2010 und Version 4.0 des .NET Frameworks.

    VB.NET-Quellcode

    1. Public Function CreateList(byval Anzahl as Integer) As List(of Integer)
    2. dim tmplist as new List(of Integer)
    3. For i as Integer = 1 to Anzahl Step 1
    4. tmplist.Add(i)
    5. next
    6. Return tmplist
    7. End Sub


    Aufgerufen wird das Ganze so:

    VB.NET-Quellcode

    1. dim MeineListe as List(of Integer) = CreateList(10)
    2. 'die Schleife dient nur zu Demonstrationszwecken, und sollte entfernt werden (Bei Zahlen über 10 wirds nervig, für jede Zahl eine Messagebox angezeigt zu bekommen)
    3. For each i as Integer in MeineListe
    4. MsgBox(i.ToString)
    5. next


    Wenn du das Ganze als Text (in einer Datei) brauchst, muss man noch ein paar Dinge ändern.
    SWYgeW91IGNhbiByZWFkIHRoaXMsIHlvdSdyZSBhIGdlZWsgOkQ=

    Weil einfach, einfach zu einfach ist! :D
    @Samus Aran: Bei mir funktioniert das (leider) auch mit Option Strict On:

    VB.NET-Quellcode

    1. Dim IntValue As Integer = 10
    2. Dim StringValue As String = "Bla " & IntValue

    Ich finde es sehr schade (und unerwartet), dass implizite Konvertierungen hier erlaubt sind. (Edit: Aber immer noch besser als bei C#, wo wirklich jedes Objekt implizit nach String konvertiert wird)


    @zeraus:
    Eine "Liste von Variablen" zu erstellen, ist normalerweise nicht nötig.
    Es ist auch etwas komisch. Guck mal hier:

    VB.NET-Quellcode

    1. For i As Integer = 0 to GetWert()
    2. Dim "Variable" & i.ToString As Sonstwas
    3. Next


    Das kann natürlich nicht funktionieren.

    Jetzt überleg mal, woher der Compiler (das ist das Ding, das aus dem Quellcode die Exe Datei macht) wissen will, ob ich darunter z.B. MessageBox.Show(Variable5.ToString) schreiben darf.
    Genau. Er kann es nicht. Denn er weiß ja nicht, welchen Wert die GetWert() Funktion zurückgeben wird. (Mal abgesehen davon, dass sowas codetechnisch total undurchschaubar wäre.


    Manchmal gilt: Wenn Du Dir diese Frage stellen musst, solltest Du Dir Deine Architektur nochmal anschauen.


    PS:
    Ich habe auch ein paar Tips für dich, wie Du Deinen Codestil verbessern kannst.
    Aber zuerst:
    Bitte VB Tags benutzen - was ist damit gemeint?
    Dann fällt es uns leichter, den Code zu lesen, den Du postest ;)

    Man kann die Deklaration und Initialisierung einer Variable in eine Zeile packen:

    VB.NET-Quellcode

    1. Dim Var As Integer = 0

    Wenn Du Option Infer On hast (das ist standardmäßig eingestellt), kannst Du dem Compiler auch das Erkennen des Typs überlassen:

    VB.NET-Quellcode

    1. Dim Val = 0

    Val ist dann vom Typ Integer.
    0.0 wäre ein Double (Gleitkommazahl mit doppelter Genauigkeit).
    0.0F oder 0F wäre ein Single (Gleitkommazahl mit einfacher Genauigkeit). Das F kommt von "Float", wegen "Fließkommazahl".

    Ganz wichtig: home.arcor.de/eckardahlers/Pro…/Blogs/WarumStrictOn.html
    Ich erkenne bei Dir keinen solchen Fehler, aber ich wollte es schon mal anmerken.

    Du kannst die Funktion der Variable, der While-Schleife und der Inkrementierung der Variable durch eine For-Schleife ersetzen:

    VB.NET-Quellcode

    1. For i As Integer = 0 To 15
    2. Next

    Der Code innerhalb der Schleife wird jetzt genau 16 mal ausgeführt. Beim ersten Mal hat die Variable i den Wert 0, dann 1, 2, 3 und so weiter, bis zum letzten mal, bei dem sie den Wert 15 hat.

    Das ist wesentlich übersichtlicher. Und man hat nachher keine unnötigen Variablen mehr herumliegen.

    Parallel dazu gibt es auch die ForEach-Schleife. Guck mal bei MSDN nach. Da findest Du mit ziemlicher Sicherheit etwas passendes.

    Val = Val + 1 lässt sich schöner als Val += 1 schreiben (Es ist Geschmackssache. Manche sagen, dass es unsauber ist, ich finde es schöner.).
    "Luckily luh... luckily it wasn't poi-"
    -- Brady in Wonderland, 23. Februar 2015, 1:56
    Desktop Pinner | ApplicationSettings | OnUtils

    Dieser Beitrag wurde bereits 3 mal editiert, zuletzt von „Niko Ortner“ ()

    Ich glaube du hast hier eine richtige Antwort zur falschen Frage geschrieben (Wenn mans so sagen will).

    Er wollte doch nur wissen wie er eine Liste mit Variablen erstellt. (z.B.: Array oder List(of T))

    Nicht wie er Variable Variablennamen (klingt komisch) erstellt.

    Niko Ortner schrieb:

    Eine "Liste von Variablen" zu erstellen, ist normalerweise nicht nötig.

    Wat? Wie programmierst du dann wenn du mehrere Instanzen eines Typs hast? Für alles ein eigenes Objekt anlegen? Eher nicht.

    Zum Rest: Find ich toll dass du Ihn ermunterst, sich einen sauberern Programmierstil anzueignen. Daumen hoch. :)
    SWYgeW91IGNhbiByZWFkIHRoaXMsIHlvdSdyZSBhIGdlZWsgOkQ=

    Weil einfach, einfach zu einfach ist! :D
    @BiedermannS:
    So meinte ich das nicht. Du hast jetzt genau das falsche verstanden ^^
    Ich meinte mit "Liste von Variablen" sowas:

    VB.NET-Quellcode

    1. Sub DoIt()
    2. GeneriereVariablen()
    3. Variable1 = 1
    4. MessageBox.Show(Variable40);
    5. End Sub
    6. 'Erinnert mich an PHP
    "Luckily luh... luckily it wasn't poi-"
    -- Brady in Wonderland, 23. Februar 2015, 1:56
    Desktop Pinner | ApplicationSettings | OnUtils
    Das ist mir klar, aber dass ist keine Liste von Variablen. O.o

    eine Liste von Variablen ist (in einfachster Form) ein Array.
    Für mehr Funktionalität usw. gibts dann List (of T), Dictionary(of T, T) usw...

    Und dass ist das was der TE wissen wollte.

    Ich weiß schon was du meinst und es war auch richtig, dass du gesagt hast "So gehts nicht". Aber der Bezug zur eigentlichen Frage bzw. eine Hilfestellung dazu fehlte halt.

    Niko Ortner schrieb:

    'Erinnert mich an PHP

    xD
    SWYgeW91IGNhbiByZWFkIHRoaXMsIHlvdSdyZSBhIGdlZWsgOkQ=

    Weil einfach, einfach zu einfach ist! :D

    FloFuchs schrieb:

    Wer zum Teufel redet hier eigentlich von Listen mit Variablen???


    Schon mal die Überschrift gelesen?

    Da wir nicht genau wissen, was er mit den Zahlen (Variablen) machen will, müssen wir sowieso warten bis er sich wieder meldet.
    SWYgeW91IGNhbiByZWFkIHRoaXMsIHlvdSdyZSBhIGdlZWsgOkQ=

    Weil einfach, einfach zu einfach ist! :D

    BiedermannS schrieb:

    Da wir nicht genau wissen, was er mit den Zahlen (Variablen) machen will

    Dazu müsste man sich halt den Rest von seinem Post durchlesen und mal kurz nachvollziehen was sein bisheriger Code macht, dann schauen was er drunter geschrieben hat wie es aussehen soll. Da steht schon das was er als Ergebnis bekommt, 5 einzelne MsgBoxen und haben will er den Text der 5 einzelnen Boxen zusammen in einer... aber nix für ungut... warten wir ;)