none
Powershell Array RRS feed

  • Frage

  • Guten Morgen

    ich möchte mein Skript, bezüglich dem Bubblesort Algortithmus verbessern.

    Dort möchte ich gerne das Array per Visual Basic Box einlesen.

    Hier erstmal der Quellcode:

    ###############################
    #                            Bubblesort                            #
    #                             Autor: XXX                           #
    #                            Version 0.01                         #
    ###############################
    cls
    #Starten von Visual Basic
    [System.Reflection.Assembly]::LoadWithPartialName("Microsoft.VisualBasic");

    param ($theArray = @(2,5,6,8,4) )
     
    # Setzte sorted auf falsch
    [bool] $sorted = $false
    $counter = 0
    for ($pass = 1; ($pass -lt $theArray.Count) -and -not $sorted; $pass++)
    {
       # Assume the array is sorted
       $sorted = $true
        for ($index = 0; $index -lt ($theArray.Count - $pass); $index++)
            {
            $counter++
            $nextIndex = $index + 1
                if ($theArray[$index].CompareTo($theArray[$nextIndex]) -gt 0)
                 {
                # Elemente tauschen
                $temp = $theArray[$index]
                $theArray[$index] = $theArray[$nextIndex]
                $theArray[$nextIndex] = $temp
                $sorted = $false
                 }
        }
    }

    $zahl=$theArray.Count
    $zahl2=$counter
    $reihe=$theArray
    [System.Windows.Forms.MessageBox]::Show("Anzahl der Elemente: $zahl")
    [System.Windows.Forms.MessageBox]::Show("Anzahl der Durchläufe: $zahl2")
    [System.Windows.Forms.MessageBox]::Show("Finale Sortierung: $reihe")

    Meine Frage ist jetzt, wie ich diese Zeile "param ($theArray = @(2,5,6,8,4) )"  in Visual Basic einlesen kann.

    Vielen Dank für eure Antwort.

    Freitag, 23. November 2012 07:59

Antworten

  • Deine Frage ist sehr sehr schwer zu verstehen! Bitte versuch die Frage deutlicher zu gestalten!
    meinst du das so ?

    ###############################
    #                            Bubblesort                            #
    #                             Autor: XXX                           #
    #                            Version 0.01                         #
    ###############################
    cls
    #Starten von Visual Basic
    [System.Reflection.Assembly]::LoadWithPartialName("Microsoft.VisualBasic") | Out-Null
    
    # Text mit der Visual Basich Inputbox abfragen
    $EnteredText = [Microsoft.VisualBasic.Interaction]::InputBox(
        "Zahlen mit Komma getrennt eingeben! `n Beispiel: 2,5,6,8,4",
        "Zahlen eingeben Bitte!", "2,5,6,8,4",$Form.Left + 50, $Form.Top + 50) 
    
    # Den text anhand des Kommas aufsplitten
    # dadurch ensteht ein Array
    $theArray = $EnteredText -split ','
    
    # Setzte sorted auf falsch
    [bool] $sorted = $false
    $counter = 0
    for ($pass = 1; ($pass -lt $theArray.Count) -and -not $sorted; $pass++)
    {
       # Assume the array is sorted
       $sorted = $true
        for ($index = 0; $index -lt ($theArray.Count - $pass); $index++)
            {
            $counter++
            $nextIndex = $index + 1
                if ($theArray[$index].CompareTo($theArray[$nextIndex]) -gt 0)
                 {
                # Elemente tauschen
                $temp = $theArray[$index]
                $theArray[$index] = $theArray[$nextIndex]
                $theArray[$nextIndex] = $temp
                $sorted = $false
                 }
        }
    }
    
    $zahl=$theArray.Count
    $zahl2=$counter
    $reihe=$theArray
    [System.Windows.Forms.MessageBox]::Show("Anzahl der Elemente: $zahl")
    [System.Windows.Forms.MessageBox]::Show("Anzahl der Durchläufe: $zahl2")
    [System.Windows.Forms.MessageBox]::Show("Finale Sortierung: $reihe")


    Please click “Mark as Answer” if my post answers your question and click “Vote As Helpful” if my Post helps you.
    Bitte markiere hilfreiche Beiträge von mir als “Als Hilfreich bewerten” und Beiträge die deine Frage ganz oder teilweise beantwortet haben als “Als Antwort markieren”.
    My PowerShell Blog http://www.admin-source.info
    [string](0..21|%{[char][int]([int]("{0:d}" -f 0x28)+('755964655967-86965747271757624-8796158066061').substring(($_*2),2))})-replace' '
    German ? Come to German PowerShell Forum!

    Freitag, 23. November 2012 09:23

Alle Antworten

  • Deine Frage ist sehr sehr schwer zu verstehen! Bitte versuch die Frage deutlicher zu gestalten!
    meinst du das so ?

    ###############################
    #                            Bubblesort                            #
    #                             Autor: XXX                           #
    #                            Version 0.01                         #
    ###############################
    cls
    #Starten von Visual Basic
    [System.Reflection.Assembly]::LoadWithPartialName("Microsoft.VisualBasic") | Out-Null
    
    # Text mit der Visual Basich Inputbox abfragen
    $EnteredText = [Microsoft.VisualBasic.Interaction]::InputBox(
        "Zahlen mit Komma getrennt eingeben! `n Beispiel: 2,5,6,8,4",
        "Zahlen eingeben Bitte!", "2,5,6,8,4",$Form.Left + 50, $Form.Top + 50) 
    
    # Den text anhand des Kommas aufsplitten
    # dadurch ensteht ein Array
    $theArray = $EnteredText -split ','
    
    # Setzte sorted auf falsch
    [bool] $sorted = $false
    $counter = 0
    for ($pass = 1; ($pass -lt $theArray.Count) -and -not $sorted; $pass++)
    {
       # Assume the array is sorted
       $sorted = $true
        for ($index = 0; $index -lt ($theArray.Count - $pass); $index++)
            {
            $counter++
            $nextIndex = $index + 1
                if ($theArray[$index].CompareTo($theArray[$nextIndex]) -gt 0)
                 {
                # Elemente tauschen
                $temp = $theArray[$index]
                $theArray[$index] = $theArray[$nextIndex]
                $theArray[$nextIndex] = $temp
                $sorted = $false
                 }
        }
    }
    
    $zahl=$theArray.Count
    $zahl2=$counter
    $reihe=$theArray
    [System.Windows.Forms.MessageBox]::Show("Anzahl der Elemente: $zahl")
    [System.Windows.Forms.MessageBox]::Show("Anzahl der Durchläufe: $zahl2")
    [System.Windows.Forms.MessageBox]::Show("Finale Sortierung: $reihe")


    Please click “Mark as Answer” if my post answers your question and click “Vote As Helpful” if my Post helps you.
    Bitte markiere hilfreiche Beiträge von mir als “Als Hilfreich bewerten” und Beiträge die deine Frage ganz oder teilweise beantwortet haben als “Als Antwort markieren”.
    My PowerShell Blog http://www.admin-source.info
    [string](0..21|%{[char][int]([int]("{0:d}" -f 0x28)+('755964655967-86965747271757624-8796158066061').substring(($_*2),2))})-replace' '
    German ? Come to German PowerShell Forum!

    Freitag, 23. November 2012 09:23
  • Hi,

    sry für die schwere Frage, aber das war die Lösung :)

    Danke

    Freitag, 23. November 2012 15:55
  • Nur noch eine kurze Frage:

    Ich soll das Skript in eine exe umwandeln und ich würde gerne PrimalScript 2011 dafür benutzen.

    Die Umwandlung funktioniert auch, nur kommt da jetzt immer ein schwarzes Pop Up fenster mit einer Ladezeile von Visual Basic.

    Falls irgendwer weiß, wie man das wegbekommt schreibts mir bitte, sonst ein schönes Wochenende.

    Freitag, 23. November 2012 16:06