tutorials.de Buch-Aktion 05/2012
ERLEDIGT
NEIN
ANTWORTEN
7
ZUGRIFFE
1099
EMPFEHLEN
  • An Twitter übertragen
  • An Facebook übertragen
AUF DIESES THEMA
ANTWORTEN
  1. #1
    Avatar von waswiewo
    waswiewo waswiewo ist offline Mitglied Gold
    Registriert seit
    Dec 2007
    Ort
    Detmold, Germany, Germany
    Beiträge
    114
    Hi Leute,

    Wenn ich z.B. 4 TextBoxen ihre Werte zuweisen Will, dann mach ich das ja so:

    Code :
    1
    2
    3
    
    For i = 1 to 4 
    if me.controls("TextBox" & i).Text = CStr(Variabel)
    Next

    Jetzt Will ich aber den MAX-Wert von Variablen herausfinden, die alle den selben Anfang im variablen-Namen (leg_1, leg_2, ... usw) haben. Zuvor möchte ich gern die Variablen in eine "New List(Of Integer)" packen.

    Wie geht denn das nun? Mit dem folgenden Code hat es nicht geklappt:

    Code :
    1
    2
    3
    4
    5
    6
    7
    
            Dim Werte As New List(Of Integer)
     
            For i = 1 To 4
     
                Werte.Add("leg_" & i)
     
            Next

    Gibt es da sowas wie nen RessourcenManager-für-Variablen? Sodass ich ds irgendwie so schreiben kann:

    Code :
    1
    
    Werte.Add(variablenManager("leg_" & i))

    Ich hab schon gesucht wie nen bekloppter, finde aber nicht die passende Funktion.
     
    • MfG waswiewo

  2. #2
    Avatar von Spyke
    Spyke Spyke ist offline Capoeirista
    Registriert seit
    Oct 2002
    Beiträge
    931
    Du kannst in .Net nur über Umwege die Felder eines Objektes durchlaufen und deren Werte anfordert (Stichwort: Reflection)

    Deine List(Of Integer) funktionierte nicht weil du im einen einfach string zuweisen wolltest.

    Und der RessourcenManager verwirrt mich nun wieder.
    Was genau hast du vor?
     
    www.iv-interactive.de - Projektewebsite
    WikiParser - aktuelles Projekt

  3. #3
    Avatar von waswiewo
    waswiewo waswiewo ist offline Mitglied Gold
    Registriert seit
    Dec 2007
    Ort
    Detmold, Germany, Germany
    Beiträge
    114
    Hi!

    Bei der List(Of Integer) hab ich es auch gemerkt mit dem String

    Was ich mit dem RessourcenManager meine:

    Für alle meine Ressourcen habe ich ja genau diesen, um variabel auf meine Ressourcen zugreifen zu können

    Beispiel:

    Code :
    1
    2
    3
    4
    5
    6
    7
    
    Dim Bla() as BLA
     
    For i = 0 to IRGENDWAS
     
        Bla.add(My.Resources.ResourceManager("Datei" & i))
     
    Next

    Dies funktioniert, wenn man Dateien hat die "Datei0, Datei1, Datei2, ... usw" heißen.

    Ich möchte genau so - mit einer Schleife - auf meine Variablen zugreifen! Damit ich nicht den Wert jeder einzelnen einzeln in die Liste aufnehmen muss.

    Beispiel - so wie ich es gerne hätte:

    Code :
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    
     
    ' Die Variablen heißen beispielsweise: Var0, Var1, Var2, usw UND werden als Public
    ' deklariert, da ich von verschiedenen Formen drauf zurückgreife.
     
    Dim Bla() as BLA ' Liste mit den Werten der Variablen, die ich mit der Schleife herausfinden möchte
     
    For i = 0 to IRGENDWAS
     
        Bla.add(My.Variablen.VariablenManager("Var" & i))
     
    Next

    Und so möchte ich es nicht machen:

    Code :
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    
    Bla.add(Var0)
    Bla.add(Var1)
    .
    .
    .
    Bla.add(Var47)
    .
    .
    .
    usw

    Ich hab es z.Z. so:

    Code :
    1
    
    Dim Bla%() = {Var0, Var1, Var2, Var3, ... usw}

    Evtl verstehst du jetzt mein Anliegen
    Geändert von waswiewo (29.09.11 um 15:40 Uhr)
     
    • MfG waswiewo

  4. #4
    Avatar von Spyke
    Spyke Spyke ist offline Capoeirista
    Registriert seit
    Oct 2002
    Beiträge
    931
    Naja immernoch nicht wirklich.
    Zuerst wollte ich dir zu Verwendung von Dictionary raten.
    Deshalb jetzt kurz ein Auszug aus dem was ich zu schreiben wollt:
    Mit dem könntest du Werte mit einem speziellen Schlüssel / Namen ablegen.
    Funktioniert ähnlich wie ein Array oder eine Liste nur das du einen Namen hast über diesen du deinen Wert anforderst.

    Bin mir nur nicht sicher ob das Dictionary wirklich aushilft.
     
    www.iv-interactive.de - Projektewebsite
    WikiParser - aktuelles Projekt

  5. #5
    Avatar von Shakie
    Shakie Shakie ist offline Mitglied Diamant
    Registriert seit
    May 2004
    Ort
    Europa
    Beiträge
    2.048
    Mir ist spontan auch das von Spyke genannte Dictionary eingefallen. Aber, so wie du schreibst waswiewo, klingt es eher so als würdest du das Rad neu erfinden wollen, weil du noch nicht genügend Programmier-Erfahrung hast. Deswegen meine Frage: Warum willst du das machen, was du oben beschrieben hast, waswiewo?
     
    hihi = -h²

  6. #6
    Avatar von waswiewo
    waswiewo waswiewo ist offline Mitglied Gold
    Registriert seit
    Dec 2007
    Ort
    Detmold, Germany, Germany
    Beiträge
    114
    Ich glaub ich hab in dem Moment einfach nicht wirklich selbst gepeilt, was ich schreibe

    Ich hab jetzt alles Mit Arrays() & ArraysInArray()() gelöst.

    Es war für ein Spiel gedacht, wo jeder Spieler die Selben Variablen hat. Spieler 1 hat z.B. Punkte01, Spieler 2 hat Punkte02, usw..

    Und da dachte ich ... ich habe auch Ressourcen, die von Sound001 bis Sound180 gehen. Diese spreche ich mit dem RessourcenManager in einer Schleife an ( RessourcenManager("Sound" und i) ).

    Und jetzt kommt meine Überlegung. Die variablen auch in einer Schleife VARIABEL anzusprechen.

    Beispiel:

    ...("Punkte" & i)

    Und das scheint nicht - oder nur über dieses von euch erwähnte 'Dictionary' - zu funktionieren. Also hab ich alle Spielerdaten in Arrays geballert. Array$()() = {New String() {Punkte, Bla, Blub, Ergebnis, usw, etc}, ..., ..., ...}

    Funktioniert einwandfrei.

    Ps: Ja, du hast Recht, ich bin noch kein Profi-Programmierer
     
    • MfG waswiewo

  7. #7
    Avatar von Spyke
    Spyke Spyke ist offline Capoeirista
    Registriert seit
    Oct 2002
    Beiträge
    931
    OK, ich glaub das ist nicht meine Woche, so ganz versteh ichs immer noch nicht
    (Oder ich sollte es nicht immer so spät lesen )

    Aber das wichtigste ist ja eh, finde ich, vorallem für den Anfang, das du es selbst schaffst Lösungswege zu finden, das gibt immer son schönen aha Effekt
     
    www.iv-interactive.de - Projektewebsite
    WikiParser - aktuelles Projekt

  8. #8
    Avatar von Shakie
    Shakie Shakie ist offline Mitglied Diamant
    Registriert seit
    May 2004
    Ort
    Europa
    Beiträge
    2.048
    Hm.... ich will dir mal zeigen, wie ich es (ungefähr) machen würde. Du hast da zum Beispiel die Variable "Punkte". Ich nehme an, das ist eine Zahl und kein Text? Wenn ja, dann solltest du sie auch als solche abspeichern und nicht als String.
    Am besten erstellst du eine Klasse, die alle Informationen über einen Spieler abspeichert. Das könnte zum Beispiel so aussehen:
    Code vbnet:
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    
    Public Class Spielerdaten
        ''' <summary>
        ''' Der Nickname des Spielers
        ''' </summary>
        Public Property Name As String
     
        ''' <summary>
        ''' Ein Punktestand. Kann ganzzahlige positive und negative Werte annehmen
        ''' </summary>
        Public Property Punkte As Integer
     
        ''' <summary>
        ''' Anderer Punktestand. Kann nur ganzzahlige positive Werte annehmen
        ''' </summary>
        Public Property NurPositivePunkte As UInteger
     
        ''' <summary>
        ''' Ergebnis des Spielers. Kann reelle Werte (Zahlen mit Nachkommastellen) annehmen
        ''' </summary>
        Public Property Ergebnis As Double
    End Class
    Hier wird der Punktestand als Integer gespeichert (nur Zahlen, kein Text), das Ergebnis als Double (Zahlen mit Nachkommastellen) und lediglich die Name-Eigenschaft ist vom Typ String.
    Jetzt kannst du "Spielerdaten"-Objekte erstellen:
    Code vbnet:
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    
    Dim Spieler1 As New Spielerdaten
    Spieler1.Ergebnis = -1.337
    Spieler1.Name = "Karl der Große"
    Spieler1.Punkte = -5
    Spieler1.NurPositivePunkte = 4
     
    Dim Spieler2 As New Spielerdaten
    Spieler2.Ergebnis = Math.PI
    Spieler2.Name = "Karl der Kleine"
    Spieler2.Punkte = Spieler1.Punkte * 2
    Spieler2.NurPositivePunkte = UInteger.MaxValue
    Du kannst natürlich auch ein Array erstellen, oder eine Liste (Liste erscheint mir hier sinnvoller):
    Code vbnet:
    1
    2
    3
    
    Dim AlleSpielerListe As New List(Of Spielerdaten)
    AlleSpielerListe.Add(Spieler1)
    AlleSpielerListe.Add(Spieler2)
    Die Klasse Spielerdaten speicherst du am Besten in einer eigenen Datei ab.
     
    hihi = -h²

Ähnliche Themen

  1. Antworten: 1
    Letzter Beitrag: 26.08.10, 17:18
  2. Antworten: 2
    Letzter Beitrag: 25.04.10, 13:11
  3. Werte zuweisen
    Von Sven4972 im Forum PHP
    Antworten: 8
    Letzter Beitrag: 31.01.09, 13:30
  4. Variablen aus Datei anderen Variablen zuweisen
    Von Flolei im Forum Flash Plattform
    Antworten: 3
    Letzter Beitrag: 24.11.04, 14:56
  5. Antworten: 4
    Letzter Beitrag: 14.09.04, 11:03