Beim Definieren von Variablen andere Variablen mit einbeziehen

  • VB.NET

Es gibt 21 Antworten in diesem Thema. Der letzte Beitrag () ist von Mangafreak1995.

    Beim Definieren von Variablen andere Variablen mit einbeziehen

    Ich habe auch mal wieder ein Problem:
    Ich möchte eine Reihe Variablen der Reihe nach definieren, also etwa:

    VB.NET-Quellcode

    1. Dim Var_1 As Integer
    2. Dim Var_2 As Integer
    3. Dim Var_3 As Integer
    4. Dim Var_4 As Integer
    5. ...

    Das ganze hatt ich vor mit einer Schleife zu lösen, und da ist auch schon das Problem:

    VB.NET-Quellcode

    1. Dim Var_zaehler As Integer
    2. For me.Var_zaehler = 1 to 4
    3. Dim Var_[color=#000066]Var_zaehler[/color] As Integer
    4. Next Var_zaehler

    So wie das ganze nun da steht, wird einfach 4x die Variable "Var_Var_zaehler" definiert. Stattdessen soll aber der aktuelle Wert von Var_zaehler, hier Blau markiert, eingesetzt werden, um weiter oben genanntes zu erhalten.

    Vermutlich muss man dafür ein Sonderzeichen etc. verwenden, ich wüsste jedoch nicht welches.


    Weis jemand wie das geht? Schon mal danke im Vorraus ;)




    Mfg, jmb.96 :)


    EDIT:
    Naja, so quasi blau markiert ;)
    "People assume that time is a strict progression of cause to effect, but actually, from a non-linear, non-subjective viewpoint, it's more like a big ball of wibbly wobbly, ...timey wimey ...stuff."

    Mangafreak1995 schrieb:

    Und das nennt man Array.

    Korrekt.
    Was Dir da vorschwebt, sind C-Makros, die sowieso niemand außer dem Ersteller lesen kann.
    So etwas ist in .NET zum Glück Out.

    VB.NET-Quellcode

    1. Dim zaehler() As Integer = New Integer(3) {1, 2, 3, 4}
    Falls Du diesen Code kopierst, achte auf die C&P-Bremse.
    Jede einzelne Zeile Deines Programms, die Du nicht explizit getestet hast, ist falsch :!:
    Ein guter .NET-Snippetkonverter (der ist verfügbar).
    Programmierfragen über PN / Konversation werden ignoriert!

    RodFromGermany schrieb:

    Was Dir da vorschwebt, sind C-Makros, die sowieso niemand außer dem Ersteller lesen kann.
    So etwas ist in .NET zum Glück Out.

    VB.NET-Quellcode

    1. Dim zaehler() As Integer = New Integer(4) {1, 2, 3, 4}
    1. Sind C-Makros richtig nützlich, aber in .Net nicht nötig.
    2. Das Array sollte schon eine Länge von 4 haben, wenn du vier Werte nimmst ;)
    Zu 2: Hat es ja auch.

    VB.NET-Quellcode

    1. New Integer(3) ' geht von 0-3
    In VB.NET funktioniert die Indexierung von Arrays ein klein wenig anders. ;)

    Mangafreak1995 schrieb:

    1. Sind C-Makros richtig nützlich, aber in .Net nicht nötig.
    2. Das Array sollte schon eine Länge von 4 haben, wenn du vier Werte nimmst
    zu 1. Sie sind in .NET definitiv ausgeschlossen.
    zu 2. Du denkst wahrscheinlich in C/C++/C#, dort wäre das richtig. VB.NET ist da halt ein wenig anders. :D
    Falls Du diesen Code kopierst, achte auf die C&P-Bremse.
    Jede einzelne Zeile Deines Programms, die Du nicht explizit getestet hast, ist falsch :!:
    Ein guter .NET-Snippetkonverter (der ist verfügbar).
    Programmierfragen über PN / Konversation werden ignoriert!
    Mist ^^, da habt ihr mich wieder. (Warum muss VB die Logik wieder zerbrechen )

    RodFromGermany schrieb:

    zu 1. Sie sind in .NET definitiv ausgeschlossen.
    Auch in C++/CLI :?
    Ggf. managed C++, muss ich mal ausprobieren.
    Falls Du diesen Code kopierst, achte auf die C&P-Bremse.
    Jede einzelne Zeile Deines Programms, die Du nicht explizit getestet hast, ist falsch :!:
    Ein guter .NET-Snippetkonverter (der ist verfügbar).
    Programmierfragen über PN / Konversation werden ignoriert!

    RodFromGermany schrieb:

    Ggf. managed C++, muss ich mal ausprobieren.
    Laut WP kann man in C++/CLI auch "natives" C++ verwenden (bzw. Code direkt auf der CPU ausführen).

    Wikipedia schrieb:

    Eine Besonderheit von C++/CLI ist die Mischbarkeit von Code, der auf der virtuellen Maschine läuft, und Code, der direkt auf der CPU ausgeführt wird. Beide Arten von Programmcode können in einer einzigen Programmdatei zusammengestellt werden. Mit dieser Möglichkeit nimmt C++/CLI bislang eine Sonderstellung unter den .NET-Sprachen ein.


    Ob solch' kram trotzdem möglich ist.. keine Ahnung.
    Von meinem iPhone gesendet

    nikeee13 schrieb:

    keine Ahnung.

    Ebenfalls keine Ahnung.
    Hab ich nich nicht gemacht.
    Falls Du diesen Code kopierst, achte auf die C&P-Bremse.
    Jede einzelne Zeile Deines Programms, die Du nicht explizit getestet hast, ist falsch :!:
    Ein guter .NET-Snippetkonverter (der ist verfügbar).
    Programmierfragen über PN / Konversation werden ignoriert!
    Jetzt hab ich den Thread fast vergessen, erst mal Danke für die vielen Antworten ;)
    Bei Variablen kann man natürlich Arryas nehmen, daran hatte ich beim Fragestellen gar nicht gedacht, da ich die Frage vereinfacht hatte. Bei meinem tatsächlichen Problem wird das nämlich blöderweise nichts mit Arryas, es handelt sich dabei um das Definieren von Controls, ganauer gesagt Panels.
    Zur besseren Verständlichkeit hier einmal mein Ansatz und das Problem:

    VB.NET-Quellcode

    1. For panel_load_number = 1 To 400
    2. Dim Panel_[b]block_load_number[/b] As New Panel
    3. Next panel_load_number

    EDIT: Das wird nichts mit dem Fettdrucken im VB-Tag. Stellt euch das ganze einfach Fett vor ;)
    Es sollen also 400 Panels erstellt werden, je mit dem Namen Panel_ und und einer eindeutigen Nummer, z.B. Block_34 . Wie gesagt, mit Arryas kommt man hier nicht weiter, ich wollte eben die Frage vereinfachen und habe dummerweise nicht daran gedacht, das bei normalen Variablen Arryas die beste Option wären. Leider.

    Daher: Noch einmal eine große Entschuldigung für meine dumme Fragestellung.
    Hat jemand zu dem Problem eine Idee?



    Mfg, jmb.96 :)
    "People assume that time is a strict progression of cause to effect, but actually, from a non-linear, non-subjective viewpoint, it's more like a big ball of wibbly wobbly, ...timey wimey ...stuff."
    Meines Wissens nach lassen sich Controls nicht als Array definieren.
    Ich muss wohl aus deinem Post schließen dass ich damit falsch liege.
    Fragt sich also nur noch wie :D
    "People assume that time is a strict progression of cause to effect, but actually, from a non-linear, non-subjective viewpoint, it's more like a big ball of wibbly wobbly, ...timey wimey ...stuff."
    olololololol ?
    Ein Control ist auch nur eine Klasse. Und man kann aus allem ein/e Array/Liste/Dictionary initialisieren.
    Letztlich sitzen aber alle Controls (auch deine 150.000 Panels) bereits beim Adden in einer einfach zugreifbaren Auflistung (FormXY.Controls). Hier kannst du mit ner ForEach und entsprechendem Testen auf Typ und Casten recht luxoriös drauf zugreifen. Für die Unterscheidung solltest du die dafür erfundene Eigenschaft Name, die alle Controls haben, nutzen. Dies ist ein einfacher String, dem du alle möglichen gewünschten Infos durch Stringverkettung mitgeben kannst. (DiesesControl.Name="Nr" & 146587.toString)
    Schließlich werden auch Menschen mit Namen versehen und nicht an Hand des Aufenthaltsortes in irgendeiner Schublade identifiziert :) .

    Fiel Fergnügen

    Vatter
    :thumbsup: Seit 26.Mai 2012 Oppa! :thumbsup:
    Irgendwie habe ich wohl im Moment ein Brett vorm Kopf.
    Wird bei

    VB.NET-Quellcode

    1. Dim xyz as Panel

    nicht bereits "xyz" als Name für das Panel festgelegt?
    Wohl eher nicht, also dient "xyz" als Aufrufsname für ein Panel allgemein? Aber so eine Definition würde auch keinen Sinn machen.

    ...
    Ja, ich weiß wie dumm das jetzt klingt.
    Trotzdem: Kann mir jemand einen kleinen Tipp geben? Ein Link zu einer Erklärungsseite würde ja eigendlich schon reichen, alle Suchbegriffe die mir zum Thema einfallen bringen nichts.



    Mfg, jmb.96 :)
    "People assume that time is a strict progression of cause to effect, but actually, from a non-linear, non-subjective viewpoint, it's more like a big ball of wibbly wobbly, ...timey wimey ...stuff."

    jmb.96 schrieb:

    Es sollen also 400 Panels erstellt werden,

    ich hab noch nie erlebt, dass sowas wirklich nötig wäre.
    Allerdings hört man gelegentlich davon, dass eine Form mit zu vielen Controls ziemlich träge in ihren Reaktionen wird.

    Warum meinst du also, 400 Panels seien nötig?
    xyz ist in diesem Fall der Variablenname, aber nicht der Control.Name. Und daran orientieren sich einige Funktionen der IContainer.

    ErfinderDesRades schrieb:

    jmb.96 schrieb:

    Es sollen also 400 Panels erstellt werden,

    ich hab noch nie erlebt, dass sowas wirklich nötig wäre.
    Allerdings hört man gelegentlich davon, dass eine Form mit zu vielen Controls ziemlich träge in ihren Reaktionen wird.

    Warum meinst du also, 400 Panels seien nötig?

    Das war ein fiktier Wert ;)

    Mangafreak1995 schrieb:

    xyz ist in diesem Fall der Variablenname, aber nicht der Control.Name. Und daran orientieren sich einige Funktionen der IContainer.

    Und genau da sitzt ja das Brett vor meinem Kopf. Warum Variablemname? Mit

    VB.NET-Quellcode

    1. Dim xyz As Panel
    definiert man doch das Panel, warum also Variable?
    (Ok, ja, auf dem Gebiet bezeichne ich mich jetzt selbst als hoffnungsloser Fall *schäm*)

    Mfg, jmb.96 :)
    "People assume that time is a strict progression of cause to effect, but actually, from a non-linear, non-subjective viewpoint, it's more like a big ball of wibbly wobbly, ...timey wimey ...stuff."