_arryamax

  • hi,

    habe einen Ordner mit x Dateien die einen fortlaufenden Dateinamen habe zb. BK000461.txt..BK000590.txt. Nun wollte ich den Höchsten im Array ermitteln. Doch irgendwie habe ich eine Brett vor dem Kopf.

    [autoit]

    Global $string = _FileListToArray("G:\12 2007\", "*.txt")
    _ArrayDisplay($string, "Array", 10)
    MsgBox(64,"Min",_ArrayMin($string,1))
    MsgBox(64,"Max",_Arraymax($string -1,1))

    [/autoit]


    Leider scheitert es momentan am Arraymax. Das Ziel der Veranstaltung soll sein das ich ermiiteln kann welche des laufenden Dateinamen fehlt.
    Taucher

    :P Streite nie mit einem Idioten
    Erst zieht er dich auf sein Niveau herunter und schlägt dich dort mit seiner Erfahrung :D

    2 Mal editiert, zuletzt von taucher_2006 (24. Januar 2008 um 19:59)

  • warscheinlich hängt er bei ArrayMax und -Min da noch im Dateinamen BK ist. Also vorher noch ein StringMid (oä.) durchführen.
    $string = StringMid($string, 3, 6)
    z.B. ...
    Hier nochmal im Ganzen (übrigens ist die array.au3 nicht included ;)):

    [autoit]


    #include <Array.au3> ;Hab ich noch eingefügt. Kann sein das dein Skript nicht alles ist und du schon includet hast. Dann diese Zeile löschen ^^
    Global $string = _FileListToArray("G:\12 2007\", "*.CDR") ;.CDR??? Schreib doch mal ein ECHTES Dateibeispiel. Ansonsten kann es sein dass es nich funzt.
    _ArrayDisplay($string, "Array", 10) ;Zeigt das Array $string an
    $string = StringMid($string, 3, 6) ;Extrahiert 6 Zeichen (also die Zahl) ab den 3 Buchstaben (BK>>>000461<<<.txt)
    MsgBox(64,"Min",_ArrayMin($string,1)) ;Gibt die kleinste Zahl im Array aus
    MsgBox(64,"Max",_Arraymax($string -1,1)) ;Gibt die größte Zahl im Array aus

    [/autoit]

    Kann natürlich auch sein dass es daran nicht liegt xD


    Edit: Wenn du wissen willst wann du Kette zu ende ist würd ich dir ne For Schleife mit FileExists empfehlen.

  • hi,
    das war schon ein echtes Beispiel. Es will auch so nicht gehen.
    Ich möchte ja eigentlich nur wissen welche Datei fehlt.

    Taucher

    :P Streite nie mit einem Idioten
    Erst zieht er dich auf sein Niveau herunter und schlägt dich dort mit seiner Erfahrung :D

    • Offizieller Beitrag

    So gehts:

    [autoit]

    #include <array.au3>
    Global $string = _FileListToArray("G:\12 2007\", "*.txt")
    Global $aTmp[1]
    For $i = 1 To UBound($string) -1
    _ArrayAdd($aTmp, StringTrimLeft(StringTrimRight($string[$i], 4), 2))
    Next
    $indx = _ArrayMaxIndex($aTmp, 1, 1)
    MsgBox(0, 'Höchster Wert', $string[$indx])

    [/autoit]
    • Offizieller Beitrag

    Eine andere Variante:

    [autoit]


    #include <String.au3>
    #include <array.au3>
    #include <File.au3>

    [/autoit][autoit][/autoit][autoit]

    Global $string = _FileListToArray(@ScriptDir, "*.txt")
    Global $aTmp[1], $i
    _ArrayDisplay($string, "Array", 10)
    For $i = 1 To $string[0]
    $aTmp = _StringBetween($string[$i], 'bk', '.txt')
    If IsArray($aTmp) Then $string[$i] = $aTmp[0]
    Next
    MsgBox(64,"Min",_ArrayMin($string, 1, 1))
    MsgBox(64,"Max",_Arraymax($string, 1, 1))

    [/autoit]