Index was outside the bounds of the array

  • VB.NET
  • .NET 4.5

Es gibt 4 Antworten in diesem Thema. Der letzte Beitrag () ist von VaporiZed.

    Index was outside the bounds of the array

    Hey.


    Ich habe hier einen Code der jedoch nicht richtig auf "Windows 7" klappt,

    VB.NET-Quellcode

    1. Public Function GetRandomItem(ByVal pArray As String()) As String
    2. Dim Rng As New Random()
    3. Dim Max As Integer = pArray.Length - 1
    4. Dim Index As Integer = Rng.Next(0, Max)
    5. Return pArray(Index)
    6. End Function


    er soll mit Hilfe von streamreader eine random line von z.B einer pastebin raw rausfiltern,
    jedoch kommt immer beim Start "Index was outside the bounds of the array", auf Windows 10 tritt das Problem nicht auf, auf Windows 7 leider schon.
    Ich hoffe mir kann da jemand helfen.
    @MrProxey Willkommen im Forum. :thumbup:
    Zunächst packst Du die Zeile

    VB.NET-Quellcode

    1. Dim Rng As New Random()
    aus der Prozedur in die Klasse, weil nur so die Zahlen halbwegs zufällig sind.
    Das Einzuge, was mir hier einfällt, ist, dass das Array die Länge 0 hat.Da hilft nur: Debuggen.
    Kläre auf, was da los ist: Debuggen, Fehler finden und beseitigen
    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).
    VB-Fragen über PN / Konversation werden ignoriert!
    Lies dir ganz genau die Dokumentation von Random.Next durch!
    docs.microsoft.com/en-us/dotne…ystem_Int32_System_Int32_
    "Luckily luh... luckily it wasn't poi-"
    -- Brady in Wonderland, 23. Februar 2015, 1:56
    Desktop Pinner | ApplicationSettings | OnUtils
    Eine Zeile und das ganze ist geschrieben.

    VB.NET-Quellcode

    1. Return pArray(Rng.Next(pArray.Length))


    Ist pArray überhaupt instanziert (ALSO NICHT NOTHING) und hat pArray auch schon werte drin (pArray.Length > 0)?

    EDIT: Sorry. Klar, es gilt das was die Vorgänger schon geschrieben haben, insbesondere die Random-Deklaration aus der Klasse nehmen.

    Freundliche Grüsse

    exc-jdbi

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

    exc-jdbi schrieb:

    Ist pArray überhaupt instanziert (ALSO NICHT NOTHING) und hat pArray auch schon werte drin (pArray.Length > 0)?
    Dann kämen andere Fehlermeldungen, zumindest in VS19:

    Quellcode

    1. System.NullReferenceException: "Der Objektverweis wurde nicht auf eine Objektinstanz festgelegt."
    2. "pArray" war "Nothing".

    Quellcode

    1. System.ArgumentOutOfRangeException: ""minValue" kann nicht größer als maxValue sein.
    2. Parametername: minValue

    Aber wie RfG schon schrieb: Debuggen. Schauen, was Index ist, was pArray so alles enthält und was ist pArray(Index) zum Fehlerauftretenzeitpunkt ist.

    ##########

    btw: Hast Du uns ne Testdatei, womit wir den Fehler reproduzieren können?
    Dieser Beitrag wurde bereits 5 mal editiert, zuletzt von „VaporiZed“, mal wieder aus Grammatikgründen.

    Häufig von mir verwendete Abkürzungen: CEs = control elements (Labels, Buttons, DGVs, ...) und tDS (typisiertes DataSet)
    Aufgrund spontaner Selbsteintrübung sind all meine Glaskugeln beim Hersteller. Lasst mich daher bitte nicht in den Spekulatiusmodus gehen.

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