none
Wie kann ich eine do while-Schleife mit einer ganz bestimmten Taste unterbrechen? RRS feed

  • Frage

  • Hallo,

    mal angenommen, ich möchte

    $a = read-host "Eingabe"
    $b = read-host "Eingabe"
    $c = read-host "Eingabe"

    dieses "Script" mit der Escape-Taste abbrechen und möchte dies mit einer do while-Schleife tun (ich könnte zwar für meine Belange auch switch benutzen, das wird aber zu aufwendig)

    do{
    $a = read-host "Eingabe"
    $b = read-host "Eingabe"
    $c = read-host "Eingabe"
    }while ("Taste" -ne {ESC})

    So würde ich mir das vorstellen wollen. Hat jemand eine Idee wie das zu realisieren wäre?

    Dankeschön!

    Grüße aus Hamburg

    7flames
    Mittwoch, 30. März 2011 19:34

Antworten

  • Du hast hier mehrere Möglichkeiten. Am einfachsten wäre es, ein bestimmtes "Abbruchzeichen" zu definieren, sagen wir "x". Das generelle "Problem" bei einer do-while-Schleife ist, das die while-Bedingung erst am Ende abgefragt wird, du also deine Abbruchbedingung immer wieder abfragen musst.

    Also z.b.:

    do{
     $a = read-host "Eingabe"
     if ($a -eq "x") {break}
     $b = read-host "Eingabe"
     if ($b -eq "x") {break}
     $c = read-host "Eingabe"
     if ($c -eq "x") {break}
    }while ($true)

    Der Abbruch erfolgt nun an einer beliebigen Stelle mit "x"+"Enter". Hinter while kannst du noch eine zusätzliche Bedingung definieren, momentan wird sie niemals wahr.

    Einen Abbruch nach einem reinen "ESC"-Tastendruck kannst du meiner Ansicht nach nur entweder mit Windows-Forms  (z.b. einer GUI-Eingabebox) realisieren, oder mit einem eigenen Event, z.b. mit dem PS-Eventing-Cmdlet.

    Wenn du Windows-Forms für deine Eingaben verwendest, hast du deutlich mehr Möglichkeiten auf alle möglichen Arten auf Keyboard-Events zu reagieren. Das klingt vielleicht erst mal kompliziert, ist es aber nicht wirklich. Hier ist ein Beispiel.

    Grüße, Denniver


    http://bytecookie.wordpress.com/
    Donnerstag, 31. März 2011 11:07
    Moderator