Gast ManfredH Geschrieben 18. Februar 2012 Melden Teilen Geschrieben 18. Februar 2012 Mahlzeit, kann mir bitte jemand erklären, wie ich in der PowerShell mehrere Werte in einem Array speichern kann? Das Ganze soll so sein, dass man per Eingabe-Schleife eine beliebige Anzahl von Werten eingeben kann, bis eine Abbruchbedingung greift. Problem: Wie kann ich nun diese eingegebenen Werte flexibel im Array speichern, wenn ich vorher noch gar nicht weiß, wie viele Werte am Ende auch wirklich eingegeben werden? Das Array müsste ja dann dynamisch mitwachsen und alle Werte aufnehmen. :confused: Zitieren Link zu diesem Kommentar
frr 11 Geschrieben 18. Februar 2012 Melden Teilen Geschrieben 18. Februar 2012 Hallo, das ist eigentlich rest einfach: while(1 -eq 1){ $eingabe += @(read-host "Ihre Eingabe") } Solange in dem Beispiel 1 gleich 1 ist, verlangt das Skript Eingaben. Diese Eingaben werden in einem Array gespeichert. Bei jeder Eingabe wird allerdings ein neues Array erstellt und das drückt hier die Performance. Da der User aber die Eingaben macht, ist dieser Aspekt zu vernachlässigen. Wenn es auf Performance ankommt, dann würde ich unter Umständen eine Arraylist nehmen. Viele Grüße Frank Zitieren Link zu diesem Kommentar
Gast ManfredH Geschrieben 18. Februar 2012 Melden Teilen Geschrieben 18. Februar 2012 Hallo Frank, erstmal danke für die schnelle Antwort. Ich hatte mir das eigentlich folgendermaßen vorgestellt: $AlleEingaben = "Wert 1", "Wert 2", "Wert 3", "Wert4", ... Anschließend möchte ich dann auf die einzelnen Werte zugreifen können, ohne dass ich für jeden eingegebenen Wert ein neues Array bekomme. Geht das irgendwie? Im Prinzip muss das Array für die Variable "$AlleEingaben" ja nur entsprechend der Eingabewerte ständig erweitert werden ... aber wie? Zitieren Link zu diesem Kommentar
Dukel 454 Geschrieben 18. Februar 2012 Melden Teilen Geschrieben 18. Februar 2012 $alleeingaben[0] $alleeingaben[1] $alleeingaben[2] $alleeingaben[3] ... Zitieren Link zu diesem Kommentar
Gast ManfredH Geschrieben 18. Februar 2012 Melden Teilen Geschrieben 18. Februar 2012 Ok, meine Frage war schlecht formuliert, neuer Versuch: Die Ausgabe, wie du sie beschrieben hast, ist mir bekannt. Mein Problem ist die Eingabe dieser einzelnen Werte über die Schleife. Wie schaffe ich es denn, dass alle einzelnen Werte in der Variable "$AlleEingaben" aufgenommen werden? Zitieren Link zu diesem Kommentar
Dukel 454 Geschrieben 18. Februar 2012 Melden Teilen Geschrieben 18. Februar 2012 So wie frr schieb. In $eingabe stehen alle Eingaben als einzelne Werte und du kommst per $eingabe[x] an die einzelnen Elemente. Zitieren Link zu diesem Kommentar
frr 11 Geschrieben 18. Februar 2012 Melden Teilen Geschrieben 18. Februar 2012 Hallo, hast Du meine Ansatz überhaupt getestet? Lasse Dich nicht von meinem ersten Posting verwirren. Es ist genau das, was Du willst. Es wird nicht für jeden Wert ein neues Array erstellt, sondern wenn ein Wert zu dem Array kommt, wird das alte Array in ein neues kopiert. Das kostet Performance was aber in Deinem Fall nicht relevant ist. Viele Grüße Frank Zitieren Link zu diesem Kommentar
Gast ManfredH Geschrieben 18. Februar 2012 Melden Teilen Geschrieben 18. Februar 2012 Hallo Frank, ich hatte es getestet - aber natürlich nur halb und damit die Ausgabe vergessen. Sorry. :o Ich konnte es nun nachvollziehen und es passiert das, was auch passieren sollte. Danke! Eine Frage noch: Hat jemand einen Tipp, wie ich auf eine leere Eingabe überprüfen kann? Zitieren Link zu diesem Kommentar
frr 11 Geschrieben 18. Februar 2012 Melden Teilen Geschrieben 18. Februar 2012 Hallo, da Du bei keiner Eingabe von read-host einen leeren String zurückbekommst, kannst Du mit $eingabe -contains "" testen, ob nur Enter gedrückt wurde. Viele Grüße Frank Zitieren Link zu diesem Kommentar
Gast ManfredH Geschrieben 18. Februar 2012 Melden Teilen Geschrieben 18. Februar 2012 Danke! Zitieren Link zu diesem Kommentar
Empfohlene Beiträge
Schreibe einen Kommentar
Du kannst jetzt antworten und Dich später registrieren. Falls Du bereits ein Mitglied bist, logge Dich jetzt ein.