Sonntag, 24. Mai 2015

Yab - Datei oder Verzeichnis


Wie finde ich heraus, ob ich eine Datei oder ein Verzeichnis über ein Filepanel oder Dropzone verarbeiten muss?

Meine diesbezügliche Lösung beinhaltet eine IF-Abfrage und eine Subroutine.

If-Abfrage:


Folder$=Quellvariable$


if(IfDirectory(Folder$))then
      is_an_directory=1
else
      is_an_directory=2
endif

print is_an_directory


Subroutine:


sub IfDirectory(filename$)
      return not system("test -d "+filename$)
end sub
Um herauszufinden, ob ich ein Verzeichnis oder eine Datei über ein Filepanel oder Dropzone zu verarbeiten habe, übergebe ich meinen Dateipfad an die Variable Folder$ und verwende den Test Befehl um zu prüfen, ob ich ein Verzeichnis in der Variablen übergeben habe.


Ist die Überprüfung positiv wird durch die If-Abfrage die Zalenvariable is_an_directory auf 1 gesetzt. Ist es kein Verzeichnis, wird der Wert auf 2 gesetzt.

Beispiel: Egal was übergeben wird, es wird der Dateipfad ermitteln


If-Abfrage:


if(IfDirectory(Quellvariable$)) then
      is_an_directory=1
      Folder$= Quellvariable$
else
      is_an_directory=2
      dim SplitFolderPath$(1)
            splitting = split(Quellvariable$, SplitFolderPath$(), "/")
            for i = 2 to splitting-1
                  Folder$=Folder$+"/"+SplitFolderPath$(i)
            next i
            print "folder:"+Folder$
endif


Subroutine:


sub IfDirectory(filename$)
      return not system("test -d "+filename$)
end sub

In diesem Beispiel erweitern wir diese Überpürfung und ermitteln, egal was wir abfragen (Datei oder Verzeichnis),  wie der Dateipfad ist.


Ermittelt der test Befehl ein „nicht“ Verzeichnis, wird die Quellvariable über einen Array (SplitFolderPath$()) in seine Einzelteile zerschnitten. Um dies zu tun, wird bei jedem „/“ Zeichen eine neuer Eintrag im Array angelegt.


Danach werden alle Arrayeinträge wieder zusammengesetzt, mit Ausnahme des letzten Eintrages.

Keine Kommentare:

Kommentar veröffentlichen