FileInfo - ein External für Runtime RevolutionMöchte
man unter Runtime Revolution [1] die Eigenschaften
einer bestimmten
Datei
bestimmen, so muß man zunächst die Eigenschaften aller Dateien
im
übergeordneten Ordner erfassen und anschließend die gewünschte Datei
ausfiltern - in großen Verzeichnissen und/oder auf Netzlaufwerken ist
dies eine sehr ineffiziente Angelegenheit. An dieser Stelle wird deshalb mit "FileInfo" ein kleines
"External" vorgestellt, mit dem man die Eigenschaften einer bestimmten
Datei direkt ermitteln kann. Das External sowie eine kleine Beispielanwendung können für
Windows, Linux und MacOS X heruntergeladen und nach Belieben in eigenen
(kommerziellen wie nicht-kommerziellen) Projekten eingesetzt werden -
beide stehen unter der "MIT License" [2] mit
der zusätzlichen Einschränkung, daß jegliche Änderungen an dem vom
Autor herausgegebenen Original deutlich gekennzeichnet werden müssen
- dergestalt, daß der Autor nicht mit diesen Änderungen in Verbindung
gebracht werden kann! InhaltsübersichtUm direkt zu einem bestimmten Abschnitt zu gelangen, klicken
Sie einfach auf die entsprechende Überschrift:
Installation - "FileInfo" in RunRev integrierenDamit das External unter Runtime Revolution eingesetzt werden
kann, muß Revolution erst darauf hingewiesen werden - der "FileInfo
Demonstrator" zeigt beispielhaft, wie man dabei vorgehen sollte:
Innerhalb des FileInfo-Demonstrators wird das External (im
Rahmen der "preOpenStack"- Prozedur) wie folgt geladen: local ApplicationPath Die ersten Zeilen ermitteln den Pfad zu dem Verzeichnis, in
welchem sich der FileInfo-Demonstrator selbst befindet. Die folgenden
Zeilen laden aus diesem Verzeichnis die zur aktuellen
Plattform passende Datei - wird die betreffende Plattform nicht
unterstützt, zeigt
der FileInfo-Demonstrator eine entsprechende Fehlermeldung an. Das zentrale Kommando für das Laden eines External lautet: set the externals of this stack to ... wobei die Ellipse "..." durch eine "Liste" mit den Pfadnamen
der zu ladenden Dateien zu ersetzen ist - mit je einer Datei pro Zeile. Sobald das External erfolgreich geladen (und initialisiert)
wurde, sollte der vom External gemeldete Paketname in der Liste der
"externalPackages" auftauchen (da der Dateiname des External
beliebig geändert werden kann, muß der Paketname nicht
unbedingt etwas mit dem Dateinamen zu tun haben): # **** check presence of the external as a whole **** Auch hier gilt: war der Ladevorgang nicht erfolgreich (aus
welchem Grunde auch immer, genauere Hinweise auf den aufgetretenen
Fehler liefert Revolution leider nicht), wird eine entsprechende
Fehlermeldung angezeigt. Wer möchte, kann auch die Liste der von allen
Externals bereitgestellten Funktionen und Kommandos nach den benötigten
(nämlich den vom gerade betrachteten External gelieferten) Einträgen
durchsuchen: # **** check presence of every single foreseen function **** Die ersten Zeilen legen eine (Leerzeichen-separierte) Liste
aller erwarteten Funktionen des "FileInfo"-External an (Kommandos
werden von "FileInfo" nicht bereitgestellt). Die folgenden Zeilen
überprüfen jeden Eintrag dieser Liste auf dessen Präsenz in den
"externalFunctions" des FileInfo-Demonstrators - sobald auch nur eine
Funktion fehlt, wird eine entsprechende Fehlermeldung angezeigt. Wurde auch dieser Test erfolgreich bestanden, kann man mit
einiger Sicherheit davon ausgehen, daß das External funktionsbereit ist. Befehlsreferenz - von
"FileInfo"
bereitgestellte Funktionen
|
|||||||||||||||
|
|
|
Öffnen Sie die "Message Box" der Revolution
Entwicklungsumgebung und geben Sie folgende Anweisung ein:
put extFileAttributes("Externals")
Sofern "the DefaultFolder" seit dem Start der Entwicklungsumgebung noch nicht verändert wurde, liefert diese Anweisung die Attribute des "Externals"-Verzeichnisses innerhalb der Revolution-Installation - und zwar als dreistellige Oktalzahl. Sie finden das Ergebnis im Ausgabebereich der "Message Box".
Geben Sie stattdessen
put extFileAttributes("Externals","readable")
ein, so gibt die Funktion eine "lesbare" Liste aller gesetzten
Verzeichnisattribute aus.
Die Funktion "extFileCreationDate" liefert den
Erstellungszeitpunkt einer Datei (bzw. eines Verzeichnisses). Unter
Windows wird die ursprüngliche, vom Betriebssystem gemeldete Zeit zuvor
in die "koordinierte Weltzeit" (UTC) umgewandelt, um mit RunRev
vergleichbare Zeiten zu liefern. Das Ergebnis ist aber stets eine
vorzeichenlose ganze
Zahl in demselben Format, wie es auch von "the detailed files"
verwendet wird.
Der Aufruf lautet:
extFileCreationDate (FileSystemEntry)
Darin ist "FileSystemEntry" der (absolute oder relative)
Pfadname des zu
untersuchenden Dateisystem-Eintrages (d.h. einer Datei, eines
Verzeichnisses, eines symbolischen Links usw.). Relative Pfadnamen
werden relativ zu "the DefaultFolder" ausgewertet.
Wird beim Aufruf kein (oder ein leeres) Argument angegeben, so
wirft
die Funktion eine Ausnahme. Kann der gegebene Dateisystem-Eintrag nicht
untersucht werden (z.B. weil er keinen gültigen Pfadnamen darstellt
oder weil der betreffende Eintrag nicht existiert), wird als Ergebnis
eine leere Zeichenkette "" zurückgegeben.
Öffnen Sie die "Message Box" der Revolution
Entwicklungsumgebung und geben Sie folgende Anweisung ein:
put extFileCreationDate("Externals")
Sofern "the DefaultFolder" seit dem Start der Entwicklungsumgebung noch nicht verändert wurde, liefert diese Anweisung das Erstellungsdatum des "Externals"-Verzeichnisses innerhalb der Revolution-Installation. Sie finden das Ergebnis im Ausgabebereich der "Message Box".
Die Funktion "extFileGroup" liefert die numerische Kennung der
Benutzergruppe, der der Besitzer der im Aufruf angegebenen Datei (bzw.
des
angegebenen Verzeichnisses) angehört. Unter Windows wird grundsätzlich
eine leere Zeichenkette ("") zurückgegeben.
Der Aufruf lautet:
extFileGroup (FileSystemEntry)
Darin ist "FileSystemEntry" der (absolute oder relative)
Pfadname des zu
untersuchenden Dateisystem-Eintrages (d.h. einer Datei, eines
Verzeichnisses, eines symbolischen Links usw.). Relative Pfadnamen
werden relativ zu "the DefaultFolder" ausgewertet.
Wird beim Aufruf kein (oder ein leeres) Argument angegeben, so
wirft
die Funktion eine Ausnahme. Kann der gegebene Dateisystem-Eintrag nicht
untersucht werden (z.B. weil er keinen gültigen Pfadnamen darstellt
oder weil der betreffende Eintrag nicht existiert), wird als Ergebnis
eine leere Zeichenkette "" zurückgegeben.
Öffnen Sie die "Message Box" der Revolution
Entwicklungsumgebung und geben Sie folgende Anweisung ein:
put extFileGroup("Externals")
Sofern "the DefaultFolder" seit dem Start der Entwicklungsumgebung noch nicht verändert wurde, liefert diese Anweisung die Gruppenkennung des "Externals"-Verzeichnisses innerhalb der Revolution-Installation. Sie finden das Ergebnis im Ausgabebereich der "Message Box".
Die Funktion "extFileInfo" ist das direkte Pendant zu "the
detailed files" bzw. "the detailed folders": sie ermittelt dieselben
Datei-/Ordner-Eigenschaften und liefert diese (in einer einzigen Zeile)
in demselben Format aus, wie es schon von "the detailed files/folders"
bekannt ist.
extFileInfo (FileSystemEntry)
Darin ist "FileSystemEntry" der (absolute oder relative)
Pfadname des zu
untersuchenden Dateisystem-Eintrages (d.h. einer Datei, eines
Verzeichnisses, eines symbolischen Links usw.). Relative Pfadnamen
werden relativ zu "the DefaultFolder" ausgewertet.
Wird beim Aufruf kein (oder ein leeres) Argument
angegeben, so
wirft
die Funktion eine Ausnahme. Kann der gegebene Dateisystem-Eintrag nicht
untersucht werden (z.B. weil er keinen gültigen Pfadnamen darstellt
oder weil der betreffende Eintrag nicht existiert), wird eine leere
Zeichenkette zurückgegeben (so, als ob Sie die Ausgabe von "the
detailed files" nach einer nicht vorhandenen Datei gefiltert hätten).
Ansonsten wird eine Komma-separierte Liste mit den folgenden
Werten ausgegeben:
Öffnen Sie die "Message Box" der Revolution
Entwicklungsumgebung und geben Sie folgende Anweisung ein:
put extFileInfo("Externals")
Sofern "the DefaultFolder" seit dem Start der Entwicklungsumgebung noch nicht verändert wurde, liefert diese Anweisung die Eigenschaften des "Externals"-Verzeichnisses aus der Revolution-Installation in dem oben erläuterten Format. Sie finden das Ergebnis im Ausgabebereich der "Message Box".
Die Funktion "extFileModificationDate" liefert den Zeitpunkt
der letzten Änderung an einer Datei (bzw. einem Verzeichnis). Unter
Windows wird die ursprüngliche, vom Betriebssystem gemeldete Zeit
zuvor in die "koordinierte Weltzeit" (UTC) umgewandelt, um mit RunRev
vergleichbare Zeiten zu liefern. Das Ergebnis ist aber stets eine
vorzeichenlose ganze
Zahl in demselben Format, wie es auch von "the detailed files"
verwendet wird.
Der Aufruf lautet:
extFileModificationDate (FileSystemEntry)
Darin ist "FileSystemEntry" der (absolute oder relative)
Pfadname des zu
untersuchenden Dateisystem-Eintrages (d.h. einer Datei, eines
Verzeichnisses, eines symbolischen Links usw.). Relative Pfadnamen
werden relativ zu "the DefaultFolder" ausgewertet.
Wird beim Aufruf kein (oder ein leeres) Argument angegeben, so
wirft
die Funktion eine Ausnahme. Kann der gegebene Dateisystem-Eintrag nicht
untersucht werden (z.B. weil er keinen gültigen Pfadnamen darstellt
oder weil der betreffende Eintrag nicht existiert), wird als Ergebnis
eine leere Zeichenkette "" zurückgegeben.
Öffnen Sie die "Message Box" der Revolution
Entwicklungsumgebung und geben Sie folgende Anweisung ein:
put extFileModificationDate("Externals")
Sofern "the DefaultFolder" seit dem Start der Entwicklungsumgebung noch nicht verändert wurde, liefert diese Anweisung das Änderungsdatum des "Externals"-Verzeichnisses innerhalb der Revolution-Installation. Sie finden das Ergebnis im Ausgabebereich der "Message Box".
Die Funktion "extFileOwner" liefert die numerische Kennung des Besitzers einer Datei (bzw. eines Verzeichnisses). Unter Windows wird grundsätzlich eine leere Zeichenkette ("") zurückgegeben.
Der Aufruf lautet:
extFileOwner (FileSystemEntry)
Darin ist "FileSystemEntry" der (absolute oder relative)
Pfadname des zu
untersuchenden Dateisystem-Eintrages (d.h. einer Datei, eines
Verzeichnisses, eines symbolischen Links usw.). Relative Pfadnamen
werden relativ zu "the DefaultFolder" ausgewertet.
Wird beim Aufruf kein (oder ein leeres) Argument angegeben, so
wirft
die Funktion eine Ausnahme. Kann der gegebene Dateisystem-Eintrag nicht
untersucht werden (z.B. weil er keinen gültigen Pfadnamen darstellt
oder weil der betreffende Eintrag nicht existiert), wird als Ergebnis
eine leere Zeichenkette "" zurückgegeben.
Öffnen Sie die "Message Box" der Revolution
Entwicklungsumgebung und geben Sie folgende Anweisung ein:
put extFileOwner("Externals")
Sofern "the DefaultFolder" seit dem Start der Entwicklungsumgebung noch nicht verändert wurde, liefert diese Anweisung die Besitzerkennung des "Externals"-Verzeichnisses innerhalb der Revolution-Installation. Sie finden das Ergebnis im Ausgabebereich der "Message Box".
Die
Funktion "extFileSize" liefert die Größe einer Datei (d.h. die genaue
Anzahl der darin enthaltenen Bytes). Für ein Verzeichnis wird
stattdessen "-1" zurückgegeben.
Der Aufruf lautet:
extFileSize (FileSystemEntry)
Darin ist "FileSystemEntry" der (absolute oder relative)
Pfadname des zu
untersuchenden Dateisystem-Eintrages (d.h. einer Datei, eines
Verzeichnisses, eines symbolischen Links usw.). Relative Pfadnamen
werden relativ zu "the DefaultFolder" ausgewertet.
Wird beim Aufruf kein (oder ein leeres) Argument angegeben, so
wirft
die Funktion eine Ausnahme. Kann der gegebene Dateisystem-Eintrag nicht
untersucht werden (z.B. weil er keinen gültigen Pfadnamen darstellt
oder weil der betreffende Eintrag nicht existiert), wird als Ergebnis
eine leere Zeichenkette "" zurückgegeben. Bezieht sich der
angegebene Eintrag nicht auf eine Datei (sondern insbesondere auf ein
Verzeichnis),
so lautet das Ergebnis "-1".
Die Funktion "extFileSize"
kann also gleichzeitig auch dazu benutzt werden, die Existenz einer
Datei (oder eines Verzeichnisses) zu überprüfen.
Öffnen Sie die "Message Box" der Revolution
Entwicklungsumgebung und geben Sie folgende Anweisung ein:
put extFileSize("Read_Me_First.txt")
Sofern "the DefaultFolder" seit dem Start der Entwicklungsumgebung noch nicht verändert wurde, liefert diese Anweisung die Größe der Datei "Read_Me_First.txt" innerhalb der Revolution-Installation. Sie finden das Ergebnis im Ausgabebereich der "Message Box".
Folgende Dateien können von hier aus auf den eigenen Rechner heruntergeladen werden (bitte achten Sie beim External auf die passende Plattform: zwar können Sie gerne alle Externals "installieren", dadurch belegen Sie aber mehr Plattenplatz als erforderlich):
Bislang sind dem Autor folgende Probleme bekannt:
Bisweilen weigern sich Stacks innerhalb der Runtime Revolution
Entwicklungsumgebung (aus unbekannten Gründen) beharrlich, ein External
zu laden, obwohl alle Voraussetzungen dafür erfüllt sind. Abhilfe
bietet meist, den betroffenen Stack einfach noch einmal zu speichern
(auch wenn daran keine Änderungen vorgenommen wurden) und die
Entwicklungsumgebung neu zu starten. Das Problem tritt vor allem
unmittelbar nach dem Herunterladen eines Stacks bzw. nach dem
Übertragen von einer Plattform auf eine andere auf.
Unter MacOS X sind CreationDate und ModificationDate (derzeit)
identisch.
| [1] |
RunRev
- the World's Easiest Programming Language (siehe http://www.runrev.com) Runtime Revolution (oder kurz "RunRev") ist eine kombinierte Laufzeit- und Entwicklungsumgebung für Windows, Linux, MacOS X (und weitere Plattformen) mit einer dem Englischen nachempfundenen Skriptsprache. Ähnlich wie bei dem berühmten Vorgänger "HyperCard" können Änderungen im laufenden Programm vorgenommen und ausprobiert werden - die klassische Unterscheidung zwischen Entwicklungsumgebung und fertigem Programm existiert in dieser Strenge nicht mehr. |
| [2] |
Open
Source Initiative OSI - The MIT License (siehe http://www.opensource.org/licenses/mit-license.php) Die
(manchmal auch "X11-Lizenz" genannte) "MIT-Lizenz" ist eine äußerst
einfach gehaltene Lizenz, die die freie Verwendung von Software
sicherstellt und den Autor gleichzeitig von jeglicher Haftung
freistellt. |
|
|
|
| http://www.Rozek.de/RunRev/FileInfo/index_de.html | Stand: 06.10.2009 |