Variablen dynamisch mit Strings und Zahl erstellen möglich?

  • VB.NET

Es gibt 12 Antworten in diesem Thema. Der letzte Beitrag () ist von exc-jdbi.

    Variablen dynamisch mit Strings und Zahl erstellen möglich?

    Hätte da mal ne Frage!

    Ich hab mehrere Variablen die ich während der Laufzeit in einer Schleife erstellen möchte..
    ..so hab ich z.B. eine Schleife von 0 bis 99 und möchte in der Schleife Byte-Arrays mit der jeweiligen Loop-Zahl erstellen, aber wie kann ich einen zusammengesetzten String zu einer Variablen deklarieren?
    Moment. Du willst z.B. zur Laufzeit eine Integervariable erstellen und ihr einen Namen geben, der zur Laufzeit generiert wird? Und wie willst Du diese Variable dann weiterverwenden? Was soll das werden, wenn's fertig ist?
    Dieser Beitrag wurde bereits 5 mal editiert, zuletzt von „VaporiZed“, mal wieder aus Grammatikgründen.

    Aufgrund spontaner Selbsteintrübung sind all meine Glaskugeln beim Hersteller. Lasst mich daher bitte nicht den Spekulatiusbackmodus wechseln.
    Die Beschreibung ist in der Tat extrem verwirrend.
    Ich lese es irgendwie so, dass ein Array erstellt werden soll, das sowohl Bytes oder Bytes() als auch String beinhalten soll.
    Also Object() oder List(Of Object) oder etwas in der Art.
    Aber ich bin davon überzeugt, dass es elegantere Methoden gibt, als momentan vom TE plant.
    Solange jedoch keine vernünftige Beschreibung kommt, kann man wirklich nur spekulieren und kommt der Lösung keinen Schritt näher.
    --
    If Not Program.isWorking Then Code.Debug Else Code.DoNotTouch
    --
    Also hier ist ne Funktion die mir ein

    VB.NET-Quellcode

    1. ​Double()()
    liefert:

    VB.NET-Quellcode

    1. Public Function _getNumericOutput() As Double()()
    2. Dim _1 As Double() = New Double() {1, -1, -1, -1, -1, -1, -1, -1, -1, -1}
    3. Dim _2 As Double() = New Double() {-1, 1, -1, -1, -1, -1, -1, -1, -1, -1}
    4. Dim _3 As Double() = New Double() {-1, -1, 1, -1, -1, -1, -1, -1, -1, -1}
    5. Dim _4 As Double() = New Double() {-1, -1, -1, 1, -1, -1, -1, -1, -1, -1}
    6. Dim _5 As Double() = New Double() {-1, -1, -1, -1, 1, -1, -1, -1, -1, -1}
    7. Dim _6 As Double() = New Double() {-1, -1, -1, -1, -1, 1, -1, -1, -1, -1}
    8. Dim _7 As Double() = New Double() {-1, -1, -1, -1, -1, -1, 1, -1, -1, -1}
    9. Dim _8 As Double() = New Double() {-1, -1, -1, -1, -1, -1, -1, 1, -1, -1}
    10. Dim _9 As Double() = New Double() {-1, -1, -1, -1, -1, -1, -1, -1, 1, -1}
    11. Dim _0 As Double() = New Double() {-1, -1, -1, -1, -1, -1, -1, -1, -1, 1}
    12. Dim input As Double()() = New Double(9)() {_1, _2, _3, _4, _5, _6, _7, _8, _9, _0}
    13. Return New Double(9)() {_1, _2, _3, _4, _5, _6, _7, _8, _9, _0}
    14. End Function


    Nun wollte ich die _1, _2, _3 etc. in einer Schleife erstellen..
    Nimm die Indexes als Namen

    VB.NET-Quellcode

    1. Dim dbl1 = Enumerable.Range(0, 10).
    2. Select(Function(x) New Double() {-x, -1}).ToArray
    3. 'oder
    4. Dim dbl2 = Enumerable.Range(0, 10).
    5. Select(Function(x) New Object() _
    6. {String.Format("_{0}", -x), -1}).ToArray


    Edit:
    Spoiler anzeigen

    VB.NET-Quellcode

    1. Dim tmp1 = New Double(9)() {}
    2. Dim tmp2 = tmp1.Select(Function(x) GetDoubleArray(-1, 10)).ToArray
    3. Anpassen(tmp2)

    VB.NET-Quellcode

    1. Private Function GetDoubleArray(num As Int32, count As Int32) As Double()
    2. Return Enumerable.Repeat(num, count).Select(Function(x) CDbl(x)).ToArray
    3. End Function
    4. Private Sub Anpassen(d()() As Double)
    5. Array.ForEach(Enumerable.Range(0, d.Length).ToArray, Sub(x) d(x)(x) = 1)
    6. End Su


    Geht aber auch so :D
    Spoiler anzeigen

    VB.NET-Quellcode

    1. tmp1 = New Double(9)() {}
    2. Dim tmp3 = tmp1.Select(Function(x) GetDoubleArray2(-1, 10)).ToArray

    VB.NET-Quellcode

    1. Private Function GetDoubleArray2(num As Int32, count As Int32) As Double()
    2. Static cnt As Int32 = -1I : cnt += 1
    3. Return Enumerable.Range(0, count).Select(Function(x) _
    4. CDbl(If(x = cnt, -1 * num, num))).ToArray
    5. End Function



    Freundliche Grüsse

    exc-jdbi

    Dieser Beitrag wurde bereits 8 mal editiert, zuletzt von „exc-jdbi“ ()

    Morrison schrieb:

    Nun wollte ich die _1, _2, _3 etc. in einer Schleife erstellen..
    Meinst du so etwas:

    VB.NET-Quellcode

    1. Public Function _getNumericOutput() As Double()()
    2. Dim x(9)() As Double
    3. For i = 0 To 9
    4. x(i) = Enumerable.Repeat(-1.0R, 9).ToArray
    5. Next
    6. Return x
    7. End Function
    ...da war schon jemand schneller
    Öhm. Beide Lösungen funktionieren nicht. Bei @exc-jdbi kommen 10 Felder à 2 Positionen raus, bei @VB1963 ist nicht berücksichtigt, dass bei jedem Feld an einer anderen Stelle eine 1 statt -1 steht. Ich weiß, keine fertigen Lösungen und so.

    ##########

    Falls denn überhaupt die Endfunktion solch ein Ergebnis liefern soll, dann z.B. mit

    VB.NET-Quellcode

    1. Public Function _getNumericOutput() As Double()()
    2. Dim FinalList As New List(Of Double())
    3. For i = 0 To 9
    4. Dim CurrentLineValues = New List(Of Double)
    5. For j = 0 To 9
    6. CurrentLineValues.Add(If(i = j, 1, -1))
    7. Next
    8. FinalList.Add(CurrentLineValues.ToArray)
    9. Next
    10. Return FinalList.ToArray
    11. End Function

    (ausbaufähig)
    Dieser Beitrag wurde bereits 5 mal editiert, zuletzt von „VaporiZed“, mal wieder aus Grammatikgründen.

    Aufgrund spontaner Selbsteintrübung sind all meine Glaskugeln beim Hersteller. Lasst mich daher bitte nicht den Spekulatiusbackmodus wechseln.

    Dieser Beitrag wurde bereits 1 mal editiert, zuletzt von „VaporiZed“ ()

    VB.NET-Quellcode

    1. Public Function _getNumericOutput() As Double()()
    2. Dim x(9)() As Double
    3. For i = 0 To 9
    4. x(i) = Enumerable.Repeat(-1.0R, 10).ToArray
    5. x(i)(i) = 1
    6. Next
    7. Return x
    8. End Function
    ...hatte diese -1 und 1 übersehen (meine alten Äuglein ;) )

    Dieser Beitrag wurde bereits 1 mal editiert, zuletzt von „VB1963“ ()

    @Morrison Ist das ne höhere Fingerübung oder willst Du das neu erfinden?
    Ich hatte mal dienstlich mit OCR zu tun, da haben wir ne professionelle Software gekauft und mit den Geräen weitergereicht:
    HALCON - de.ids-imaging.com/halcon.html
    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!