Array aus Fileopendialog

  • Hi,

    bin grad am rätseln ob das so überhaupt gehen kann?

    Ich öffne über fileopendialog einen ordner indem dann dateien gewählt werden und anschließend möchte ich abfragen wie viele dateien gewählt wurden. (denn eine bestimmte menge muss hier gewählt werden)

    Code
    $sFileName = FileOpenDialog("Bitte wähle die Dateien", "Pfad" , $FD_FILEMUSTEXIST + $FD_PATHMUSTEXIST + $FD_MULTISELECT)
    
    Global $dateimenge
    $dateimenge = DirGetSize($sFileName, BitOR($DIR_EXTENDED, $DIR_NORECURSE))
    If $dateimenge[1] < 5 Then
       MsgBox(16+262144, "Fehler", "Es wurden zu wenig Dateien ausgewählt!")
       $sFileName = FileOpenDialog("Bitte wähle die Dateien.", "Pfad" , $FD_FILEMUSTEXIST + $FD_PATHMUSTEXIST + $FD_MULTISELECT)
       EndIf

    Aber kann ich überhaupt mir aus Fileopendialog die Menge als array zurück geben lassen? Denn ich erhalte ich den Fehler das meine variable wohl keine Menge liefert, wenn ich das richtig verstehe.:/

    • Offizieller Beitrag

    Du kannst bei FileOpenDialog nicht einfach Parameter weglassen (Filter) und bei "Init Dir" sollte ein Pfad stehen und nicht der String "Pfad". Alternativ darf es dort ein Leerstring sein (es wird dann das aktuelle WorkingDir benutzt).

    Außerdem gibt FileOpenDialog bei einer Mehrfachauswahl die Dateien durch eine Pipe ("|") getrennt zurück. Wobei am Anfang das Verzeichnis steht und dahinter nur jeweils die Dateinamen.

    Will man alle Dateien in einem Array haben, muss man die Rückgabe etwas bearbeiten:

  • Fileopendialog gibt einen String zurück, der Dateinamen enthält.

    Wenn du 1 Datei auswählst schaut der Pfad in etwa so aus:

    Laufwerk:\Ordner\...\Ordner\Datei

    Wenn mehrere Dateien gewählt werden wird

    Laufwerk:\Ordner\...\Ordner|Datei 1|Datei 2|...

    zurückgegeben.

    Mit FileSelectFolder kannst du einen Ordner auswählen.

    In jedem Fall benötigt DirGetSize als Parameter einen Ordner und keine Datei!

    Du kannst also entweder FileSelectFolder verwenden oder du musst aus deinem FileOpenDialog den Ordnerpfad extrahieren.

    EDIT: Da war wohl jemand schneller 8o