4D v16.3

Einführung in Systemdokumente

Home

 
4D v16.3
Einführung in Systemdokumente

Einführung in Systemdokumente  


 

Alle Dokumente und Anwendungen auf Ihrem Rechner sind in Dateien auf einer bzw. mehreren Festplatten gespeichert, die auf Ihrem Rechner, Ihr(en) Laufwerk(en) oder anderen Speichermedien angemeldet oder angeschlossen sind. Innerhalb von 4D verwenden wir die Begriffe Datei oder Dokument für diese Dokumente und Anwendungen. In diesem Abschnitt jedoch arbeiten wir überwiegend mit dem Begriff Dokument, da die meisten Befehle für den Zugriff von Dokumenten und weniger für Anwendungen oder Systemdateien eingesetzt werden.

Eine Festplatte kann als eine oder mehrere Partitions formatiert sein, eine Partition heißt Volume. Es spielt keine Rolle, ob auf derselben Festplatte zwei Volumes präsent sind, auf 4D Ebene behandeln Sie diese normalerweise als getrennte und gleiche Einheiten.

Ein Volume kann auf einer Festplatte liegen, die direkt an Ihren Rechner angeschlossen oder über das Netzwerk mit einem File Sharing Protokoll angemeldet ist, wie z.B. TCP/IP, AFP oder SMB auf Macintosh. Wenn Sie Befehle für Systemdokumente auf 4D Ebene einsetzen, behandeln Sie all diese Volumes immer gleich. Die Ausnahme ist, wenn Sie z.B. mit Plug-Ins die Leistung Ihrer Anwendung in diesem Bereich erweitern.

Jedes Volume hat einen Volume-Namen. Unter Windows werden Volumes mit einem Buchstaben gefolgt von einem Doppelpunkt gekennzeichnet. Mit C: und D: werden im Normalfall Volumes zum Booten Ihres Systems bezeichnet - außer, Sie haben Ihren PC anders konfiguriert. Die Zeichen E: bis Z: werden für zusätzliche Volumes verwendet, die an Ihrem Rechner angeschlossen oder angemeldet werden (DVD Treiber, zusätzliche Treiber, Netzwerk Treiber, usw.). Auf Macintosh haben die Volumes Namen, die Sie auf Ihrem Schreibtisch auf der Finder-Ebene sehen können.

Sie unterteilen Ihre Dokumente im allgemeinen in Ordner, die wiederum Unterordner enthalten können. Sammeln Sie nicht hunderte von Dateien auf derselben Ebene eines Volumes an, denn das ist verwirrend und verlangsamt Ihr System. Unter Windows heißt ein Ordner Verzeichnis; auf Macintosh wird schon immer der Begriff Ordner verwendet.

Um ein Dokument eindeutig zu identifizieren, müssen Sie den Namen des Volumes wissen, den Namen des/der Ordner, wo das Dokument liegt und den Dokumentnamen selbst. Diese aneinandergereihten Namen ergeben den Pfadnamen des Dokuments. Die Namen werden durch ein spezielles Zeichen, das Trennungssymbol für Ordner voneinander getrennt. Unter Windows ist es der umgekehrte Schrägstrich (\); auf Macintosh der Doppelpunkt (:).

Hierzu ein Beispiel: Sie haben das Dokument Wichtige Notiz im Ordner Notizen, der im Ordner Dokumente liegt, der wiederum im Ordner Aktuelle Projekte liegt.

Unter Windows ergibt sich folgender Pfadname, wenn alles auf dem Laufwerk C: (Volume) liegt:

C:\Aktuelle Projekte\Dokumente\Notizen\Wichtige Notiz.TXT

Hinweis: Das Zeichen \ wird auch vom 4D Methodeneditor für Escape Sequenzen (Steuerzeichen) verwendet. Um Probleme bei der Interpretation zu vermeiden, wandelt der Editor Pfadnamen wie C:\Festplatte automatisch um in C:\\Festplatte. Weitere Informationen dazu finden Sie im nachfolgenden Abschnitt “Escape Sequenzen und Pfadnamen unter Windows”.

Auf Macintosh ergibt sich folgender Pfadname, wenn alles auf der Festplatte (Volume) Interner Treiber liegt:

Interner Treiber:Aktuelle Projekte:Dokumente:Notizen:Wichtige Notiz

Unter Windows hat der Dokumentname die Endung .TXT; die Erläuterungen dazu folgen im nächsten Absatz.

Für den kompletten Pfadnamen gilt, unabhängig von der Plattform folgendes Schema:

VolName Trenner { OrdnerName Trenner { OrdnerName Trenner { ... } } } DokName

Die Dokumente (Dateien) auf den Volumes haben mehrere Merkmale, das sind die Attribute oder Eigenschaften: der Dokumentname selbst, der Typ und der Creator.

Ein Dokument ist offen im Lese-/Schreibmodus, im Modus Nur-Lesen oder geschlossen. Mit den in 4D integrierten Befehlen kann nur ein Prozess ein Dokument gleichzeitig im Lese-/Schreibmodus öffnen. Ein Prozess kann zwar mehrere Dokumente öffnen und mehrere Prozesse können wiederum mehrere Dokumente öffnen. Sie können dasselbe Dokument beliebig oft im Modus Nur-Lesen öffnen, jedoch nur einmal zur gleichen Zeit im Lese-/Schreibmodus.

Mit den Funktionen Open document, Create document, Append document öffnen Sie ein Dokument. Create document und Append document öffnen die Dokumente automatisch im Lese-/Schreibmodus. Nur mit Open document können Sie den Modus beim Öffnen wählen. Im geöffneten Dokument können Sie Zeichen schreiben sowie aus- und einlesen. Weitere Informationen dazu finden Sie unter den Befehlen RECEIVE PACKET und SEND PACKET. Haben Sie die Bearbeitung abgeschlossen, schließen Sie das Dokument mit dem Befehl CLOSE DOCUMENT.

Der Bezug auf alle offenen Dokumente erfolgt mit dem Ausdruck DocRef, den die Funktionen Open document, Create document und Append document zurückgeben. DocRef erkennt nur ein offenes Dokument. Es ist formell ein Ausdruck vom Typ Zeit. Alle Befehle und Funktionen, die mit offenen Dokumenten arbeiten, erwarten als Parameter DocRef. Übergeben Sie für diese Befehle eine inkorrekte DocRef, tritt ein Fehler im Dateimanager auf.

Hinweis: Wird eine Referenz DocRef von einem preemptive Prozess aufgerufen, ist sie nur von diesem preemptive Prozess verwendbar. Bei Aufruf von einem kooperativen Prozess ist DocRef von jedem anderen kooperativen Prozess verwendbar.

Ein-/Ausgabefehler können auftreten, wenn Sie auf Dokumente zugreifen, also Dokumente öffnen, schließen, löschen, umbenennen bzw. kopieren; wenn Sie die Eigenschaften eines Dokuments ändern; wenn Sie Zeichen in ein Dokument schreiben oder einlesen. Das Dokument wird z.B. nicht gefunden, es ist gesperrt oder bereits im Lese-/Schreibmodus geöffnet. Solche Fehler können Sie über eine Fehlermethode ON ERR CALL abfangen. Die häufigsten Fehler, die beim Verwenden von Systemdokumenten auftreten, werden im Abschnitt OS Systemfehler (-124 -> -33) beschrieben.

Mit den Befehlen Open document, Create document, Append document und Select document können Sie auf die Dokumente über die Standarddialogfenster zum Öffnen oder Sichern zugreifen. 4D gibt dann in der Systemvariable Document den kompletten Pfadnamen des Dokuments zurück. Verwechseln Sie diese Systemvariable nicht mit dem Parameter Document, der in der Parameterliste der Befehle erscheint!

Weitere Informationen dazu finden Sie im Abschnitt Systemvariablen.

Die meisten Routinen dieses Abschnitts, die einen Dokumentnamen erwarten, akzeptieren sowohl den Namen als auch den Pfadnamen zum Dokument - außer es wird explizit etwas anderes angegeben. Übergeben Sie einen Namen, sucht die Routine im Ordner der Datenbank nach dem Dokument. Übergeben Sie einen Pfadnamen, muss er gültig sein.
Übergeben Sie einen falschen Namen bzw. einen falschen Pfadnamen, erzeugt die Routine eine Systemfehler, den Sie mit einer Methode ON ERR CALL abfangen können.

Der Methodeneditor von 4D lässt Escape Sequenzen zu. Das ist eine Zeichenfolge, die bestimmte Zeichen ersetzt. Die Sequenz enthält einen linksgerichteten Schrägstrich (\) und ein Zeichen. \t ersetzt z.B. die Eingabe Zeichen Tab für den Tabulator.
Das Zeichen \ wird unter Windows auch als Trenner in Pfadnamen verwendet. In der Regel ersetzt 4D einfache Schrägstriche in Pfadnamen unter Windows durch doppelte Schrägstriche \\, so wird C:\Ordner zu C:\\Ordner.
Schreiben Sie dagegen C:\MeinDokument\Neu, zeigt 4D C:\\MeinDokument\Neu an. In diesem Fall wird der zweite Schrägstrich fälschlicherweise als die Escape Sequenz \N interpretiert. Aus diesem Grund müssen Sie bei Zeichen, die 4D als Escape Sequenz erkennt, stets zwei Schrägstriche eingeben \\.

4D arbeitet mit folgenden Sequenzen:

Escape SequenzErsetzte Zeichen

\n
LF (Zeilenvorschub)
\tHT (Tabulator)
\rCR (Zeilenschaltung)
\\\ (linksgerichteter Schrägstrich)
\"" (Anführungszeichen)

Die meisten Befehle zum Verwalten von 4D Dokumenten und Ordnern erlauben entweder relative oder absolute Pfadnamen:

  • Relative Pfadnamen definieren einen Speicherort in Bezug auf den Ordner, wo er auf der Festplatte liegt. In 4D wird ein relativer Pfadname in der Regel in Bezug auf den Datenbankordner definiert, z.B. dem Ordner mit der Strukturdatei. Relative Pfadnamen sind besonders hilfreich, wenn Anwendungen in heterogenen Umgebungen eingesetzt werden.
  • Absolute Pfadnamen definieren einen Speicherort in Bezug auf den Root des Volumes, so dass sie nicht von aktuellen Speicherort des Datenbankordners abhängen.

4D wendet zum Bestimmen, ob ein Pfadname, der in einem Befehl übergeben ist, als absolut oder relativ interpretiert wird, für jede Plattform einen spezifischen Algorithmus an.

Enthält der Parameter nur zwei Zeichen und ist das zweite ein ':',
    oder enthält der Text ':' und '\' als zweites und drittes Zeichen,
    oder ´beginnt der Text mit "\\",
ist der Pfadname absolute.       

In allen anderen Fällen ist der Pfadname relativ.

Beispiele mit dem Befehl CREATE FOLDER:

 CREATE FOLDER("Monday") // relativer Pfad
 CREATE FOLDER("\Monday") // relativer Pfad
 CREATE FOLDER("\Monday\Tuesday") // relativer Pfad
 CREATE FOLDER("c:") // absoluter Pfad
 CREATE FOLDER("d:\Monday") // absoluter Pfad
 CREATE FOLDER("\\srv-Internal\temp") // absoluter Pfad

Startet der Text mit einem Ordnertrenner ':' oder enthält er keinen Trenner, ist der Pfad relativ.

In allen anderen Fällen ist er absolut.

Beispiele mit dem Befehl CREATE FOLDER:

 CREATE FOLDER("Monday") // relativer Pfad
 CREATE FOLDER("macintosh hd:") // absoluter Pfad
 CREATE FOLDER("Monday:Tuesday") // absoluter Pfad (das Volume heißt Monday)
 CREATE FOLDER(":Monday:Tuesday") // relativer Pfad

Welche Plattform ist in Betrieb?

4D enthält zwar Befehle, wie z.B. MAP FILE TYPES, die unterschiedliche Codierung aufgrund plattformspezifischer Eigenschaften ausschalten. Arbeiten Sie jedoch bei der Dokumentenverwaltung auf der Festplatte auf einer niederen Ebene - Sie wollen z.B. die Pfadnamen per Programmierung erhalten - müssen Sie wissen, ob die Anwendung unter Windows oder auf Macintosh läuft.

Die Projektmethode On Windows teilt mit, ob Ihre Datenbank unter Windows läuft:

  //Projektmethode On Windows
  //On Windows -> Boolean
  //On Windows -> Wahr, wenn unter Windows
 
 C_BOOLEAN($0)
 C_LONGINT($vlPlatform;$vlSystem;$vlMachine)
 
 PLATFORM PROPERTIES($vlPlatform;$vlSystem;$vlMachine)
 $0:=($vlPlatform=Windows)

Dateinamen aus einem langen Namen entnehmen

Haben Sie den kompletten Namen für ein Dokument erhalten, also Pfadnamen + Dateinamen, möchten Sie manchmal daraus den Dateinamen entnehmen, um diesen z.B. als Titel in einem Fenster anzuzeigen. Die Projektmethode Long name to file name führt dies für Windows und Macintosh aus.

  //Projektmethode Long name to file
  //Long name to file name ( String ) -> String
  //Long name to file name ( Long file name ) -> file name
 
 C_TEXT($1;$0)
 C_LONGINT($viLen;$viPos;$viChar;$viDirSymbol)
 
 $viDirSymbol:=Character code(Folder separator)
 $viLen:=Length($1)
 $viPos:=0
 For($viChar;$viLen;1;-1)
    If(Character code($1$viChar≥)=$viDirSymbol)
       $viPos:=$viChar
       $viChar:=0
    End if
 End for
 If($viPos>0)
    $0:=Substring($1;$viPos+1)
 Else
    $0:=$1
 End if
 If(<>vbDebugOn) //Setze diese Variable in der Datenbankmethode On Startup auf Wahr oder Falsch
    If($0="")
       TRACE
    End if
 End if

Pfadnamen aus einem langen Namen entnehmen

Haben Sie den kompletten Namen für ein Dokument erhalten, also Pfadnamen + Dateinamen, möchten Sie manchmal daraus den Pfadnamen entnehmen; z.B. wenn Sie weitere Dokumente am derselben Stelle speichern wollen. Die Projektmethode Long name to path name führt dies für Windows und Macintosh aus.

  //Projektmethode Long name to path name
  //Long name to path name ( String ) -> String
  //Long name to path name ( Long file name ) -> Path name
 
 C_TEXT($1;$0)
 C_LONGINT($viLen;$viPos;$viChar;$viDirSymbol)
 
 $viDirSymbol:=Character code(Folder separator)
 $viLen:=Length($1)
 $viPos:=0
 For($viChar;$viLen;1;-1)
    If(Character code($1$viChar≥)=$viDirSymbol)
       $viPos:=$viChar
       $viChar:=0
    End if
 End for
 If($viPos>0)
    $0:=Substring($1;1;$viPos)
 Else
    $0:=$1
 End if
 If(<>vbDebugOn) //Setze diese Variable in der Datenbankmethode On Startup auf Wahr oder Falsch
    If($0="")
       TRACE
    End if
 End if



Siehe auch 

Append document
CLOSE DOCUMENT
COPY DOCUMENT
Create document
CREATE FOLDER
DELETE DOCUMENT
Document creator
DOCUMENT LIST
Document type
FOLDER LIST
Get document position
GET DOCUMENT PROPERTIES
Get document size
MAP FILE TYPES
MOVE DOCUMENT
Open document
Select document
SET DOCUMENT CREATOR
SET DOCUMENT POSITION
SET DOCUMENT PROPERTIES
SET DOCUMENT SIZE
SET DOCUMENT TYPE
Systemdokumente
Test path name
VOLUME ATTRIBUTES
VOLUME LIST

 
EIGENSCHAFTEN 

Produkt: 4D
Thema: Systemdokumente

 
GESCHICHTE 

 
ARTIKELVERWENDUNG

4D Programmiersprache ( 4D v16)
4D Programmiersprache ( 4D v16.1)
4D Programmiersprache ( 4D v16.2)
4D Programmiersprache ( 4D v16.3)