In den Anwendungseinstellungen Variable als Array definieren

  • VB.NET

Es gibt 13 Antworten in diesem Thema. Der letzte Beitrag () ist von ErfinderDesRades.

    In den Anwendungseinstellungen Variable als Array definieren

    Hallo
    ich entschuldige mich schon imvoraus, denn meine frage ist zu doof
    in meinem Programm habe ich einen Highscore und den möchte ich gerne speichern.

    Nun, ich weiß, dass ich das in einem .txt machen könnte, aber ich will das im Programm als Variable behalten.
    Wie das mit allen normalen Variablentypen geht weiß ich, das is ja auch einfach.

    aber es ist echt umständlich immer 20 variablen zu speichern
    und dann wieder in ein array zu packen wenn das prog startet.

    Ich glaube, das die Lösung total einfach ist und ich nur zu dumm bin um sie zu sehen
    gegooglet hab ich, und inm Forum hab ich auch schon alles umgewälzt

    Also besten Dank schonmal imvoraus an alle die helfen (=
    Hi,

    Atlan schrieb:

    aber es ist echt umständlich immer 20 variablen zu speichern
    und dann wieder in ein array zu packen wenn das prog startet.
    was ist daran denn umständlich? Du erstellst nen IO.StreamWriter und schreibst dann per For Each-Schleife deine Werte aus dem Array in jewels eine Zeile.

    VB.NET-Quellcode

    1. For Each s as <DeinDatentyp> In <DeinArray>
    2. <DeineStreamWriterInstanz>.WriteLine(s)
    3. End For
    4. <DeineStreamWriterInstanz>.Close()


    Das Auslesen funktioniert dementsprechend umgekehrt per StreamReader.

    lg SeriTools
    | Keine Fragen per PN oder Skype.
    o.O: Da hättest du dich aber richtig ausdrücken müssen! Du hast nichts von My.Settings erwähnt :D
    Bei den My.Settings musst du den Typ einfach nur auf eine ArrayList umstellen:

    Klicke bei der Combobox "Typ" auf Durchsuchen und wähle mscorlib/System.Collections/ArrayList aus.

    Alternativ kannst du auch eine StringCollection verwenden, wobei du dein Integer-Array in ein String-Array umwandeln müsstest.

    @Kangaroo: Ich auch, allerdings ist es bei einem einfachen Array nicht nötig. Bei komplexeren Klassen ist eine XML-Speicherung sicherlich von Vorteil.

    lg SeriTools
    | Keine Fragen per PN oder Skype.
    Bei mir funktioniert das net...
    Ich deklaniere ein Stringarray

    VB.NET-Quellcode

    1. Dim Fragen() as String

    und schreibe weiter unten

    VB.NET-Quellcode

    1. ReDim My.Settings.strFragenSchüler(0 To My.Settings.SchülerFragen - 1)
    2. My.Settings.strFragenSchüler = Fragen


    Er sagt mir bei ReDim, dass ich kein Array habe, und beim zweiten, dass ein 1-dimensionales Array nicht in System.Collections.ArrayList konvertiert werden kann
    Was muss ich tun?
    HerrBert
    Linux wird nie das meistinstallierte Betriebssystem sein. Bedenken Sie nur, wie oft man Windows neu installieren muss!
    :thumbsup:

    HerrBert schrieb:

    Er sagt mir beim zweiten, dass ein 1-dimensionales Array nicht in System.Collections.ArrayList konvertiert werden kann

    Ja, das ist die Wahrheit.

    "Fragen" ist ein 1-dim Array, und "My.Settings.strFragenSchüler" ist eine ArrayList.

    Deshalb kannst du "Fragen" nicht an "strFragenSchüler" zuweisen, das ist so logisch, dassichs nicht weiter erklären kann.

    Jetzt nachdenken: Welchen Datentyp müsste "Fragen" haben, damit man es an "strFragenSchüler" zuweisen könnte?
    ...Arraylist :)
    ich hab jetzt Fragen in eine Arraylist umgeändert.. nur jetzt kommt bei

    VB.NET-Quellcode

    1. My.Settings.strFragenSchüler = hlpFragen

    "Der Wert von Typ "1-demensionales Array von System.collection.arraylist" kann nicht in "System.Collections.Arraylist" konvertiert werden"

    und wie wandelt man String in die Arraylist um?, da gibt es auch einen Fehler

    VB.NET-Quellcode

    1. hlpFragen(nr) = item.Text
    Linux wird nie das meistinstallierte Betriebssystem sein. Bedenken Sie nur, wie oft man Windows neu installieren muss!
    :thumbsup:
    ok, hab vergessen die () wegzumachen..
    aber, gibt es auch ein Befehl wie "ReDim" dafür? Denn, ich weiß nicht wie groß das array sein wird, da es dynamisch ist..
    Linux wird nie das meistinstallierte Betriebssystem sein. Bedenken Sie nur, wie oft man Windows neu installieren muss!
    :thumbsup:
    Grade dafür sind Listen doch da: dass man nicht ständig ein ReDim machen muß, sondern einfach Items adden kann, mit der Add-Methode.

    Du scheinst von VB6 zu kommen. Da kannichdir sagen: Vergiß alles, was du von daher kennst. .Net geht in allem, ausnahmslos, gänzlich anders und besser vor.

    Auch dringend empfohlen: Buch Lesen. Und zwar nicht Galileo oder sonst was suboptimales, sondern VB2008 DasEntwicklerbuch - siehe die Rezension im ersten Link.
    da steht dann aber "der Index ist außerhalb vom Bereich", ja, ich komme von VB6... :/
    das mit dem Bereich kann doch nicht sein..
    Zur erläuterrung.. Ich beschreibe erst Index 6 und dann die anderen in beliebiger Reihenfolge.. ist das das Problem?
    Linux wird nie das meistinstallierte Betriebssystem sein. Bedenken Sie nur, wie oft man Windows neu installieren muss!
    :thumbsup:
    ja. Listen sind numal so, dass man erst elemente hinzufügen muß, ehe man sie überschreiben kann.

    Aber ArrayList ist eh ein ungeeigneter Datentyp. Denn dessen Elemente sind vom Typ Object. Das hat die Auswirkung, dass nicht überprüft wird, was du da reintust, und das ist gleichmal schlechter Programmierstil.

    Ändere den Setting-Typ auf StringCollection. Dann kann man da nur Strings reintun, und bekommt als n-tes Element auch einen String heraus (wos bei ArrayList nur ein Object gibt)

    Und dann lad dir das Buch runter und fang an zu studieren ;)