PofoWiki

Die ultimative Informationsquelle zum ATARI Portfolio

Benutzer-Werkzeuge

Webseiten-Werkzeuge


software:diy:basic:tbc

Unterschiede

Hier werden die Unterschiede zwischen zwei Versionen angezeigt.

Link zu dieser Vergleichsansicht

Beide Seiten der vorigen RevisionVorhergehende Überarbeitung
Nächste Überarbeitung
Vorhergehende Überarbeitung
software:diy:basic:tbc [02/04/2013 20:04] – Schreibfehlerkorrektur ebertsoftware:diy:basic:tbc [Unbekanntes Datum] (aktuell) – Externe Bearbeitung (Unbekanntes Datum) 127.0.0.1
Zeile 670: Zeile 670:
   * Auch der Rückgabewert ist streng genommen vorzeichenlos. Bei Blockgrößen über 32 KBytes sollte er deshalb nicht als negativer Wert fehlinterpretiert werden.   * Auch der Rückgabewert ist streng genommen vorzeichenlos. Bei Blockgrößen über 32 KBytes sollte er deshalb nicht als negativer Wert fehlinterpretiert werden.
   * Die Funktion schließt die Datei nach Ausführung nicht, sondern verschiebt lediglich deren internen Datenzeiger um die Anzahl der geschriebenen Bytes. Sie kann also mehrfach hintereinander aufgerufen werden, um den Inhalt einer Datei stückweise zu schreiben.   * Die Funktion schließt die Datei nach Ausführung nicht, sondern verschiebt lediglich deren internen Datenzeiger um die Anzahl der geschriebenen Bytes. Sie kann also mehrfach hintereinander aufgerufen werden, um den Inhalt einer Datei stückweise zu schreiben.
 +
  
 === fwrite(fhandle,nbytes,buf) === === fwrite(fhandle,nbytes,buf) ===
Zeile 683: Zeile 684:
  
 Hinweise: Hinweise:
-  * ''nbytes'' wird als vorzeichenloser Integer-Wert repräsentiert. Somit können theoretisch Datenblöcke von mehr als 32 KBytes geschriebenn werden.+  * ''nbytes'' wird als vorzeichenloser Integer-Wert repräsentiert. Somit können theoretisch Datenblöcke von mehr als 32 KBytes geschrieben werden.
   * Auch der Rückgabewert ist streng genommen vorzeichenlos. Bei Blockgrößen über 32 KBytes sollte er deshalb nicht als negativer Wert fehlinterpretiert werden.   * Auch der Rückgabewert ist streng genommen vorzeichenlos. Bei Blockgrößen über 32 KBytes sollte er deshalb nicht als negativer Wert fehlinterpretiert werden.
   * Die Funktion schließt die Datei nach Ausführung nicht, sondern verschiebt lediglich deren internen Datenzeiger um die Anzahl der geschriebenen Bytes. Sie kann also mehrfach hintereinander aufgerufen werden, um den Inhalt einer Datei stückweise zu schreiben.   * Die Funktion schließt die Datei nach Ausführung nicht, sondern verschiebt lediglich deren internen Datenzeiger um die Anzahl der geschriebenen Bytes. Sie kann also mehrfach hintereinander aufgerufen werden, um den Inhalt einer Datei stückweise zu schreiben.
 +
  
 === fseek(fhandle,smode,offset) === === fseek(fhandle,smode,offset) ===
Zeile 705: Zeile 707:
   * Im Modus ''_fseek_end'' wird die Position vom Dateiende um ''offset'' Bytes in Richtung Dateianfang verschoben. In den anderen Modi erfolgt die Verschiebung in Richtung Dateiende (bei einem positiven Offset, sonst umgekehrt).   * Im Modus ''_fseek_end'' wird die Position vom Dateiende um ''offset'' Bytes in Richtung Dateianfang verschoben. In den anderen Modi erfolgt die Verschiebung in Richtung Dateiende (bei einem positiven Offset, sonst umgekehrt).
   * Es erfolgt keine Prüfung, ob die Position über die Dateigrenze hinaus verschoben wird. Bei einer Verschiebung vor den Dateianfang können bei nachfolgenden Schreibzugriffen Fehler in der Dateistruktur entstehen. Bei einer Verschiebung hinter das Dateiende wird die Datei vergrößert und es entsteht ein Bereich, der mit zufälligem Inhalt gefüllt ist.   * Es erfolgt keine Prüfung, ob die Position über die Dateigrenze hinaus verschoben wird. Bei einer Verschiebung vor den Dateianfang können bei nachfolgenden Schreibzugriffen Fehler in der Dateistruktur entstehen. Bei einer Verschiebung hinter das Dateiende wird die Datei vergrößert und es entsteht ein Bereich, der mit zufälligem Inhalt gefüllt ist.
-  * Wird für ''offset=0'' angegeben, so bewirkt+  * Wird ''offset=0'' angegeben, so bewirkt
     * ''smode=_fseek_st''art eine Positionierung auf den Dateianfang,     * ''smode=_fseek_st''art eine Positionierung auf den Dateianfang,
     * ''smode=_fseek_end'' eine Positionierung auf das Dateiende und     * ''smode=_fseek_end'' eine Positionierung auf das Dateiende und
-    * ''smode=_fseek_rel'' keine ositionsänderung.+    * ''smode=_fseek_rel'' keine Positionsänderung.
   * Bei erfolgreicher Ausführung wird die aktuelle Dateiposition in der globalen Variablen ''seek_pos'' abgelegt, wobei ''seek_pos(0)'' den niederwertigen und ''seek_pos(1)'' den höherwertigen Teil enthält (die Dateiposition ist ein 32-Bit-Integer). Somit kann man die Angabe von ''offset=0'' auch nutzen, um die aktuelle Position (mit ''smode=_fseek_rel'') bzw. die Dateilänge (mit ''smode=_fseek_end'') zu ermitteln.   * Bei erfolgreicher Ausführung wird die aktuelle Dateiposition in der globalen Variablen ''seek_pos'' abgelegt, wobei ''seek_pos(0)'' den niederwertigen und ''seek_pos(1)'' den höherwertigen Teil enthält (die Dateiposition ist ein 32-Bit-Integer). Somit kann man die Angabe von ''offset=0'' auch nutzen, um die aktuelle Position (mit ''smode=_fseek_rel'') bzw. die Dateilänge (mit ''smode=_fseek_end'') zu ermitteln.
  
Zeile 730: Zeile 732:
   * Die Offset-Wert ist ein vorzeichenbehafteter 32-Bit-Integer. Somit kann man die Positionsverschiebunf theoretisch maximal +/-2^31 betragen. Weil Tokiwa-Basic keinen integralen 32-Bit-Integer kennt, ist eine Aufteilung auf zwei Argumente nötig.   * Die Offset-Wert ist ein vorzeichenbehafteter 32-Bit-Integer. Somit kann man die Positionsverschiebunf theoretisch maximal +/-2^31 betragen. Weil Tokiwa-Basic keinen integralen 32-Bit-Integer kennt, ist eine Aufteilung auf zwei Argumente nötig.
   * Bis auf den größeren möglichen Offset entspricht das Verhalten der Funktion dem für ''[[#fseek(fhandle,smode,offset)|fseek]]'' beschriebenen.   * Bis auf den größeren möglichen Offset entspricht das Verhalten der Funktion dem für ''[[#fseek(fhandle,smode,offset)|fseek]]'' beschriebenen.
 +
  
  
Zeile 738: Zeile 741:
  
 Für die Datei-Suchfunktionen wird eine globale Puffervariable ''dos_s_rec'' von 44 Bytes Länge angelegt.\\ Für die Datei-Suchfunktionen wird eine globale Puffervariable ''dos_s_rec'' von 44 Bytes Länge angelegt.\\
-Außerdem definiert die Bibliothel folgende globale Konstanten:+Außerdem definiert die Bibliothek folgende globale Konstanten:
  
   * DOS-Funktionsnummern   * DOS-Funktionsnummern
Zeile 787: Zeile 790:
  
 **Unterprogramme und Funktionen** **Unterprogramme und Funktionen**
 +
  
 === setCurrentDrive(drv) === === setCurrentDrive(drv) ===
Zeile 792: Zeile 796:
 Die Funktion legt das aktive Laufwerk fest. Die Funktion legt das aktive Laufwerk fest.
  
-Argument: Laufwerk, das aktiv gesetzt werden soll (angegeben als Index oder laufwerksbuchstabe)+Argument: Laufwerk, das aktiv gesetzt werden soll (angegeben als Index oder Laufwerksbuchstabe)
  
 Rückgabewert: aktives Laufwerk Rückgabewert: aktives Laufwerk
Zeile 798: Zeile 802:
 Hinweise:  Hinweise: 
   * Der Argumenrwert ist eine Zahl (Laufwerksindex, wobei 0 für Laufwerk A, 1 für B usw. steht) oder ein Groß- bzw. Kleinbuchstabe (Laufwerksbuchstabe)   * Der Argumenrwert ist eine Zahl (Laufwerksindex, wobei 0 für Laufwerk A, 1 für B usw. steht) oder ein Groß- bzw. Kleinbuchstabe (Laufwerksbuchstabe)
-  * Der Rückgabewert ist eine Zahl, wenn als Argument ein Index (also ein Wert zwischen 0 und 25) angegeben wurde,oder ein Groß- bzw. Kleinbuchstabe, wenn das Argument als Buchstabe angegeben wurde.+  * Der Rückgabewert ist eine Zahl, wenn als Argument ein Index (also ein Wert zwischen 0 und 25) angegeben wurde, oder ein Groß- bzw. Kleinbuchstabe, wenn das Argument als Buchstabe angegeben wurde.
   * Der Aufrufer kann den Erfolg der Operation prüfen, indem er den Rückgabewert mit dem übergebenen Argumentwert vergleicht.   * Der Aufrufer kann den Erfolg der Operation prüfen, indem er den Rückgabewert mit dem übergebenen Argumentwert vergleicht.
  
Zeile 835: Zeile 839:
   * Die Funktion kann (wie der rmdir-Befehl von DOS) nur einzelne Verzeichnisse, keine vollständigen Pfade löschen.   * Die Funktion kann (wie der rmdir-Befehl von DOS) nur einzelne Verzeichnisse, keine vollständigen Pfade löschen.
   * Das zu löschende Verzeichnis muss leer sein und darf nicht schreibgeschützt sein.   * Das zu löschende Verzeichnis muss leer sein und darf nicht schreibgeschützt sein.
 +
  
 === delFile(fpath) === === delFile(fpath) ===
Zeile 840: Zeile 845:
 Die Funktion löscht die angegebene Datei. Die Funktion löscht die angegebene Datei.
  
-Argument: Name der zu löschenden Datei(relativer oder absoluter Pfad)+Argument: Name der zu löschenden Datei (relativer oder absoluter Pfad)
  
 Rückgabewert: 0 bei Erfolg, sonst Fehlercode Rückgabewert: 0 bei Erfolg, sonst Fehlercode
Zeile 847: Zeile 852:
   * Der als Argument übergebene Pfad kann absolut oder relativ zum aktuellen Verzeichnis angegeben werden.   * Der als Argument übergebene Pfad kann absolut oder relativ zum aktuellen Verzeichnis angegeben werden.
   * Eine absolute Pfadangebe kann eine Laufwerksangabe enthalten, die nicht mit dem aktuellen (aktiven) Laufwerk übereinstimmen muss.   * Eine absolute Pfadangebe kann eine Laufwerksangabe enthalten, die nicht mit dem aktuellen (aktiven) Laufwerk übereinstimmen muss.
-  * Im Unterschied zum DOS-Befehl del kann nur eine einzelne datei gelöscht wwrden; Wildchards (* oder ?) in der Pfadangabe sind nicht zulässig.+  * Im Unterschied zum DOS-Befehl del kann nur eine einzelne Datei gelöscht wwrden; Wildchards (* oder ?) in der Pfadangabe sind nicht zulässig.
   * Die zu löschende Datei darf nicht schreibgeschützt und nicht geöffnet sein.   * Die zu löschende Datei darf nicht schreibgeschützt und nicht geöffnet sein.
  
Zeile 873: Zeile 878:
    * Bei erfolgreicher Ausführung wird der vollständige Pfad des aktuellen Arbeitsverzeichnisses in der Puffervariablen abgelegt.    * Bei erfolgreicher Ausführung wird der vollständige Pfad des aktuellen Arbeitsverzeichnisses in der Puffervariablen abgelegt.
    * Als Parameter muss die Adresse (bestimmbar mit der LOC-Funktion) des Puffers angegeben werden.    * Als Parameter muss die Adresse (bestimmbar mit der LOC-Funktion) des Puffers angegeben werden.
 +
  
 === setDTA(offs, seg) === === setDTA(offs, seg) ===
Zeile 885: Zeile 891:
 Hinweis:\\ Hinweis:\\
 Das DTA (Disk Transfer Area) ist ein Pufferbereich, der von den "altem" (CP/M-kompatiblen) DOS-Dateifunktionen sowie Das DTA (Disk Transfer Area) ist ein Pufferbereich, der von den "altem" (CP/M-kompatiblen) DOS-Dateifunktionen sowie
-von den Suchfunktionen (find first / find next) verwendete wird. Standardmäßig befindet sich dieser Bereich ab Offset+von den Suchfunktionen (find first / find next) verwendet wird. Standardmäßig befindet sich dieser Bereich ab Offset
 80H im PSP und teilt sich damit den Speicherbereich mit den auf der Kommandozeile übergebenen Parametern. Das temporäre Verlegen 80H im PSP und teilt sich damit den Speicherbereich mit den auf der Kommandozeile übergebenen Parametern. Das temporäre Verlegen
 dieses Bereichs kann sinnvoll sein, um beim Verwenden der genannten Funktionen die Parameter nicht zu überschreiben.\\ dieses Bereichs kann sinnvoll sein, um beim Verwenden der genannten Funktionen die Parameter nicht zu überschreiben.\\
Zeile 958: Zeile 964:
 Im Falle eines Fehlers (z.B. wenn die Datei nicht existiert) ist der Rückgabewert Im Falle eines Fehlers (z.B. wenn die Datei nicht existiert) ist der Rückgabewert
 größer als 255. Der um 256 verminderte Rückgabewert entspricht dann dem Fehlercode. größer als 255. Der um 256 verminderte Rückgabewert entspricht dann dem Fehlercode.
 +
  
 === setFileAttr(fname,fattr) === === setFileAttr(fname,fattr) ===
Zeile 971: Zeile 978:
 Hinweise: Hinweise:
   * Das Setzen von Attributen ist nicht beliebig möglich. Welche Attribute gesetzt werden können, ist vom Typ des Verzeichniseintrags abhängig.   * Das Setzen von Attributen ist nicht beliebig möglich. Welche Attribute gesetzt werden können, ist vom Typ des Verzeichniseintrags abhängig.
-  * Vorsicht: Es ist mit dieser Funktion grundsätzlich möglich Dateieinträge in Vezeichniseinträge umzuwandeln (und umgekehrt). Ein Anwendungsprogramm sollte dies abfangen um Fehler im Dateisystem zu verhindern.+  * Vorsicht: Es ist mit dieser Funktion grundsätzlich möglichDateieinträge in Vezeichniseinträge umzuwandeln (und umgekehrt). Ein Anwendungsprogramm sollte dies abfangenum Fehler im Dateisystem zu verhindern.
  
  
software/diy/basic/tbc.1364927624.txt.gz · Zuletzt geändert: 16/02/2024 17:02 (Externe Bearbeitung)