7. Arbeit mit Pfaden und Ordnern^7.1 Angabe von PfadenFür R-BASIC-Befehle, die einen Pfad erwarten (z.B. CreateDir, DeleteDir, SetCurrentPath, SetStandardPath, PushDir, PopDir und viele File~ Befehle) gelten einheitliche Konventionen, wie Pfade angegeben werden können.Weitere Hinweise:
^7.2 Anlegen und Löschen von Ordnern und PfadenOrdner werden auch als "Verzeichnisse" (englisch: Directory) bezeichnet. Viele diesbezügliche Befehle enthalten deswegen ein "DIR" im Namen.
R-BASIC kann ganze Pfade, bestehend aus mehreren Verzeichnissen, auf einmal anlegen oder löschen. Die meisten Programmiersprachen können das nicht.
CreateDirCreateDir (erzeuge Directory, lege Ordner an) legt einen Ordner oder einen kompletten Pfad auf einem Datenträger an. R-BASIC kann, im Gegensatz zu vielen anderen Programmiersprachen und dem PC/GEOS-SDK einen kompletten Pfad aus mehreren Unterverzeichnissen auf einmal anlegen.
CreateDir setzt die Systemvariable fileError, z.B. wenn das spezifizierte Laufwerk nicht existiert. Trat kein Fehler auf, enthält fileError den Wert 0. DeleteDirDeleteDir (lösche Directory) löscht einen Ordner oder einen kompletten Pfad vom Datenträger. DeleteDir setzt voraus, das sich keine Dateien mehr im zu löschenden Ordner befinden, ansonsten kann der Ordner nicht gelöscht werden und die Variable fileError wird entsprechend gesetzt.
DeleteDir setzt die Systemvariable fileError, z.B. wenn der zu löschende Ordner nicht existiert oder nicht leer ist. Soll ein Pfad gelöscht werden, so müssen alle zu löschenden Ordner leer sein. Trat kein Fehler auf, enthält fileError den Wert 0. Beispiele: |
CreateDir "Bücher" CreateDir "G:\\Daten\\Programme" s$ = "\\daten" : CreateDir s$ + "\\Programme" |
DeleteDir "Bücher"
DeleteDir "G:\\Daten\\Programme"
' Der Ordner Programme aus dem Ordner "G:\Daten" wird gelöscht
DeleteDir "G:\\Daten\\Programme", YES
' Der komplette Pfad "G:\Daten\Programme" wird gelöscht
' Fehlerabfrage
DeleteDir "G:\\Daten\\Programme", YES
IF (fileError) THEN MsgBox "G: \\Daten\\Programme konnte nicht
vollständig gelöscht werden"
|
Hinweis: Zur Abwärtskompatibilität mit älteren BASIC-Programmen kann man statt CreateDir auch MKDIR ("Make Directory") und statt DeleteDir auch RMDIR ("Remove Directory") schreiben.
^7.3 Der aktuelle OrdnerAlle Dateioperationen in R-BASIC beziehen sich auf ein bestimmtes Verzeichnis, das "aktuelle Verzeichnis". Der Begriff "Pfad" (englisch "path") wird verwendet, wenn ein Weg über mehrere Verzeichnisse gemeint ist bzw. gemeint sein kann.currentPath$, currentDir$, geosPath$Diese Systemvariablen enthalten die Namen wichtiger Pfade bzw. Verzeichnisse.currentPath$ enthält den aktuellen Pfad z.B. "D:\GEOS\DOCUMENT\Bilder" Beispiel: |
PRINT "Geos befindet sich im Ordner ";geosPath$ |
SetCurrentPathSetCurrentPath (Setze aktuellen Pfad) stellt das aktuelle Verzeichnis ein.
SetCurrentPath setzt die Systemvariable fileError, z.B. wenn das spezifizierte Laufwerk nicht existiert. Trat kein Fehler auf, enthält fileError den Wert 0. Beispiele: |
SetCurrentPath "Bücher" SetCurrentPath "G:\\Daten\\Programme" s$ = "\\daten" : SetCurrentPath s$ + "\\Programme" |
Hinweis: Zur Abwärtskompatibilität mit älteren BASIC-Programmen kann man statt SetCurrentPath auch CHDIR ("Change Directory") schreiben.
PushDir, PopDirGEOS verfügt über die einzigartige Fähigkeit, sich den aktuellen Pfad zu merken. Dafür wird eine sogenannter "Stack" (deutsch: Stapelspeicher), verwendet. Wie bei einem Papierstapel wird der Wert, der als letztes auf dem Stapel abgelegt wurde ("Push"-Operation) als erstes wieder vom Stapel entnommen ("Pop"-Operation). Zu jedem PushDir muss es daher ein dazugehöriges PopDir geben.
PushDir und PopDir setzen die Variable fileError zurück (Null, kein Fehler). Beispiel: |
! Es sei "G:\Daten\Audio" das aktuelle Verzeichnis PushDir ' Merken von "G:\Daten\Audio" SetStandardPath SP_TOP ' Einstellen von, z.B. "C:\GEOS" ---- PopDir ' Wiederherstellen von "G:\Daten\Audio" |
^7.4 GEOS StandardpfadeSetStandardPathSetStandardPath stellt eines der GEOS-Standardverzeichnisse als aktuelles Verzeichnis ein. Das funktioniert unabhängig davon, auf welchem Laufwerk und in welchen Verzeichnis GEOS installiert ist und auch dann, wenn eine länderspezifische GEOS-Version vorliegt, deren Verzeichnisse anders heißen.
Die Variable fileError wird zurückgesetzt (Null, kein Fehler). Beispiele: |
SetStandardPath SP_DOCUMENT SetStandardPath SP_TOP |
|
R-BASIC kennt die folgenden Standard-Pfadkonstanten:
Im PC/GEOS SDK sind weitere Konstanten definiert.
ConstructPath$ConstructPath$ erzeugt einen vollständigen Pfad aus einer Pfadkonstante und einem Unterverzeichnis. Es wird nicht geprüft, ob der so erzeugte Pfad tatsächlich existiert.
Die Variable fileError wird gesetzt (Null, oder Fehlerwert). Beispiele: |
path$ = ConstructPath$ (SP_DOCUMENT, "Bücher\\Karl May")
path$ = ConstructPath$ (SP_USER_DATA, "R-BASIC\\IMAGES")
SetCurrentPath "C:\\GEOS\\DOCUMENT\\Bilder"
path$ = ConstructPath$ (0, "Urlaub")
' --> liefert "C:\GEOS\DOCUMENT\Bilder\Urlaub"
|
GetStandardPathGetStandardPath findet die zu einem Pfad gehörende Standardpfad-Konstante. Beschreibt der Pfad keinen Ordner im GEOS-System so liefert GetStandardPath den Wert Null. In diesem Fall wird die Variable fileError auf den Wert 3 (ERROR_PATH_NOT_FOUND) gesetzt.
GetStandardPath findet prüft nicht, ob der Pfad wirklich existiert, sondern nur, ob er einen Standardpfad enthält. Die Variable fileError wird gesetzt (Null, oder Fehlerwert). Beispiele. Wir nehmen an, GEOS befindet sich im Ordner "C:\GEOS". Der aktuelle Ordner sei "DOCUMENT\Bilder". |
DIM stdPath
stdPath = GetStandardPath ("C:\\GEOS\\USERDATA\\R-BASIC")
' -> liefert 19 (SP_USER_DATA)
stdPath = GetStandardPath (currentPath$)
' -> liefert 5 (SP_DOCUMENT)
stdPath = GetStandardPath ("D:\\SOURCE\\PCGEOS")
' -> liefert 0 (kein Standardpfad)
|
GetStandardPathTail$GetStandardPathTail$ ist das Gegenstück zu GetStandardPath und findet den zum Standardpfad gehörenden Unterordner. Beschreibt der Pfad keine Ordner im GEOS-System gibt GetStandardPathTail$ den übergebenen Pfadstring komplett zurück. In diesem Fall wird die Variable fileError auf den Wert 3 (ERROR_PATH_NOT_FOUND) gesetzt.
GetStandardPathTail$ findet prüft nicht, ob der Pfad wirklich existiert, sondern nur, ob er einen Standardpfad enthält. Die Variable fileError wird gesetzt (Null, oder Fehlerwert). Beispiele. Wir nehmen an, GEOS befindet sich im Ordner "C:\GEOS". Der aktuelle Ordner sei "DOCUMENT\Bilder". |
DIM path$ as String(200)
path$ = GetStandardPathTail$ ("C:\\GEOS\\USERDATA\\R-BASIC")
' -> liefert "R-BASIC"
path$ = GetStandardPathTail$ (currentPath$)
' -> liefert "Bilder"
path$ = GetStandardPathTail$ ("D:\\SOURCE\\PCGEOS")
' -> liefert "D:\\SOURCE\\PCGEOS" (kein Standardpfad)
|
^ |