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 Zahlenvariable 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.
BuildLOG ist ein in yab geschriebenes Archiv-Programm, mit welchen man Informationen über den „build“ Prozess eines Programms oder Spiels archivieren kann.
 
Immer wieder habe ich versucht diverse Programme für Haiku zu kompilieren. Leider bin ich auf Grund von mangelnden Erfahrungen in Bezug auf das Kompilieren und Programmieren in C/C++ (und anderer Sprachen) gescheitert. Dies auch oft bei Programmen, die es in der Vergangenheit bereits für BeOS/Zeta/Haiku gegeben hat.
Leider haben die Leute, die diese Programme damals portiert haben, meist keine genauen Beschreibungen hinterlassen mit wessen Hilfe man heute, auch als nicht Entwickler, Erfolgserlebnisse feiern könnte.
 
Hier setzt das Archiv-Programm an, denn es ermöglicht genau diese Informationen zu Archivieren.
 

Wer von Euch also Lust hat mir bei diesen Projekt zu helfen, kann sich das Programm von der Download Seite der BeSly herunterladen oder über unseren Repository Server installieren, Informationen eintragen und dann die erstellten „LOG“-Dateien an mich senden (wir automatisch in eine Mail gepackt). Diese werden dann zu den BuildLOG Paket auf der BeSly hinzugefügt.

Diesmal habe ich versucht einen BUG zu fixen in yab.

 

Beim erstellen der EGSL IDE kam ich an den Punkt, an dem ich eine "Suchen und Ersetzen" Funktion einbringen wollten. Das ganze ist im Grunde überhaupt kein Problem, aber yab1.7 hat mir da einen Strich durch die Rechnung gemacht, denn "CUT" hat nicht funktioniert.

 

Da lorglas einen Fix hinbekommen hat indem er Daten änderte, hatte ich mir gedacht, dass kannste ja auch mal probieren. Da es bei der TEXTEDIT diverse Neuerungen gegeben hat und diese Funktion in der Version 1.5 funktionierte, habe ich dann "Blauäugig wie ich bin" die Dateien die in meinen Augen für die TEXTEDIT zuständig sind von der 1.5 in die 1.7 kopiert (YabText.cpp, YabText.h) und neu kompiliert. Und siehe da es hat funktioniert.

 

Leider funktionierte das dann aber nicht mit einer neu kopilierten yab Version auf Haiku alpha 4 und Alpha 3 gcc4. Durch ein Kommentar von "bbjimmy" habe ich dann erfahren, dass ich die Dateien die ich in dem Source Ordner geändert habe, natürlich auch in der BuildFactory ändern muss (Hätte ich auch selber drauf kommen können).

 

Dabei hat mir bbjimmy gleich noch einen Fix für das kopieren vom CLIPBOARD gezeigt, denn ich dann auch noch mit eingebaut habe.

 

Die neue Version ist hier (Haikuware) erhältlich.

 

Vielleicht kann Jan ja wenn er dies lesen sollten diese Erkenntnisse in einer neuen Version mit berücksichtigen :-).

 

Gruß Lelldorin

 

Auf Haikuware hat lorglas eine inoffizielle yab 1.7 Version hochgeladen, die auf der Alpha 4 läuft. Bisher nur eine gcc2 Version, dies aber mit Source. Um diese zum Laufen zu bekommen, hat er die Lokalisierungsfunktion auskommentiert, damit diese keine Fehler mehr macht beim kompilieren.

Habe diese yab Version daraufhin etwas getestet, man kann auf der Alpha 4 problemlos yab Programme starten und Builds erstellen.

Auf gcc4 habe ich es bisher nur auf Alpha 3 getestet, dort hat diese Version nicht funktioniert, erst nachdem ich den Source neu compiliert habe:

 

    cd /Pfad/in/den/Source/ordner/von/yab1.7
    make clean
    make

 

Konnte dann auch problemlos auf dem gcc4 System mit yab 1.7 programme erstellen und Build erstellen. Das einzige mankum ist, dass auf gcc4 die alten Tabviews verwendent werden, wieso auch immer.

Haikuware

Ein dickes Dankeschön an loglas für diese Version