FileOpenDialog -- Pfad

  • Hi

    Möchte gerne den Pfad und die Dateien von einem FileOpenDialog Separat haben, wie löse ich das am elegantesten ?

    Also wenn ich c:\testdir\testfile1.txt|testfile2.txt erhalte möchte ich das umwandeln in

    $pfad=c:\testdir\
    $file[0]=testfile1.txt
    $file[1]=testfile2.txt

    Kann mir jemand helfen ?

    Einmal editiert, zuletzt von Boardercrime (31. Oktober 2008 um 13:22)

  • Tja, du musst nur den String Splitten mit | und dann aufteilen :)

    Spoiler anzeigen
    [autoit]

    #include <Array.au3>
    ; Multiple filter group
    $message = "Hold down Ctrl or Shift to choose multiple files."

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

    $var = FileOpenDialog($message, @MyDocumentsDir , "Any (*.*)|Images (*.jpg;*.bmp)|Videos (*.avi;*.mpg)", 1 + 4 )

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

    If @error Then
    MsgBox(4096,"","No File(s) chosen")
    Else
    $var = StringSplit($var, "|")
    $Dir = $var[1]
    Dim $Files[$var[0]-1]
    For $i = 2 To $var[0]
    $Files[$i-2] = $var[$i]
    Next
    _ArrayDisplay($Files,$Dir)
    EndIf

    [/autoit]
  • Cool !!
    Leider läuft der Code nur bei mehreren Dateien...wenn ich nur eine anwähle schmiert das Proggi ab.


    D:\test\test.au3 (12) : ==> Array variable subscript badly formatted.:
    Dim $Files[$var[0]-1]
    Dim $Files[^ ERROR

  • Ja, das muss extra gemacht werde n...

    Spoiler anzeigen
    [autoit]

    #include <Array.au3>
    ; Multiple filter group
    $message = "Hold down Ctrl or Shift to choose multiple files."

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

    $var = FileOpenDialog($message, @MyDocumentsDir , "Any (*.*)|Images (*.jpg;*.bmp)|Videos (*.avi;*.mpg)", 1 + 4 )

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

    If @error Then
    MsgBox(4096,"","No File(s) chosen")
    Else
    Local $Files, $Dir
    _SplitFileOPenReturn($var,$Dir,$Files)
    _ArrayDisplay($Files,$Dir)

    EndIf

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

    Func _SplitFileOPenReturn($FileString,ByRef $Dir, ByRef $Files)
    Dim $Files[1]
    Local $var = StringSplit($FileString, "|")
    If @error Then
    $Dir = StringLeft($FileString,StringInStr($FileString,"\",1,-1))
    Dim $Files[1] = [StringTrimLeft($FileString,StringLen($Dir))]
    Else
    $Dir = $var[1]&"\"
    Dim $Files[$var[0]-1]
    For $i = 2 To $var[0]
    $Files[$i-2] = $var[$i]
    Next
    EndIf
    EndFunc

    [/autoit]