Startseite
Amiforce 2.1     Amiforce-News Amiforce-News Amiforce-Forum Amiforce-Forum Amiforce-Chat/IRC-Chat Amiforce-Chat/IRC-Chat Gästebuch Gästebuch Kontakt mit dem Webmaster aufnehmen Kontakt mit dem Webmaster aufnehmen

Amiblitz3
Amiblitz2(alt)
Storm Wizard
Abakus-Design
Helpguide
Toolsguide
Tipps&Tricks
Gamesfun
Links
Download
Musik

Bugfixes am Forum
Subdomains aktiviert
Counterscript entfernt
  Navigation:   Index /  Amiblitz /  Amiblitz Lesematerial /  Ab2 Referenzhandbuch (index) /  Ab2 Referenzhandbuch (Kapitel 17) / 

Referenzhandbuch



Referenzhandbuch

Kapitel 17


Kapitel 16 Inhaltsverzeichnis Kapitel 18

File-Handhabung


AB2 unterstützt die Nutzung von sequentiellem und direktem (Random-)Filezugriff.
Das Kapitel 7 befaßt sich mit den Anweisungen zum Öffnen, Schließen und Benutzen dieser Files.

Anmerkung:
Bei sequentiellen Files werden die gesamten Daten hintereinander geschrieben und auch wieder hintereinander ausgelesen. Bei einer Datenänderung müssen alle Daten neu geschrieben werden. Bei Random-Files können einzelne Daten geschrieben und gelesen werden. Bei einer Datenänderung brauchen nur die geänderten Daten neu geschrieben zu werden. Ebenfalls ist ein Zugriff auf einzelne Daten einer umfangreichen Datei möglich, ohne hierfür die gesamte Datei vorher einzulesen.

Daher müssen bei Random-Files bestimmte Regeln beachtet werden.

  • OpenFile
  • ReadFile
  • WriteFile
  • CloseFile
  • Fields
  • Put
  • Get
  • FileOutput
  • FileInput
  • FileSeek
  • Lof
  • Eof
  • Loc
  • DosBuffLen
  • KillFile
  • CatchDosErrs
  • ReadMem
  • WriteMem



  • Index

    Funktion: OpenFile

    Syntax: OpenFile(File#,Filename$)

    Modus: Amiga


    OpenFile öffnet ein mit File#-Nummer und Filename$ näher bezeichnetes File. Es kann gelesen und geschrieben werden. Konnte das File fehlerfrei geöffnet werden, wird "richtig" (-1) zurückgegeben, anderenfalls "falsch" (0). Existiert ein File mit dem Namen Filename$ noch nicht, wenn es mit OpenFile angesprochen wird, so richtet OpenFile ein entsprechendes File ein. OpenFile ist für Random-Files vorgesehen.

    Beispiel:

      If OpenFile(0,"ram:test")          ;Random-File öffnen
        MaxLen c$=32                     ;maximale Länge von c$ setzen
        Fields 0,a,b,c$                  ;Felder in einem Eintrag setzen
        a=10:b=16:c$="Hallo Ihr!"
        Put 0,0                          ;Eintrag 0 schreiben
        CloseFile 0                      ;File schließen
        If OpenFile(0,"ram:test")        ;File wieder öffnen
          Fields 0,a,b,c$                ;wieder Felder setzen
          a=0:b=0:c$=""                  ;Variablen löschen
          Get 0,0                        ;Eintrag 0 lesen
          NPrint "a=",a,"b=",b,"c$=",c$
          CloseFile 0                    ;File schließen
          MouseWait
          End
        EndIf
      EndIf
      NPrint "Datei 'ram:test' konnte nicht geöffnet werden."
    


    siehe auch: CloseFile, Fields, Get, Put, MaxLen



    Index

    Funktion: ReadFile

    Syntax: ReadFile(File#,Filename$)

    Modus: Amiga


    ReadFile öffnet ein mit Filename$ näher bezeichnetes, schon existierendes, sequentielles File zum Lesen. Konnte das ausgewählte File fehlerfrei geöffnet werden, wird "richtig" (-1), anderenfalls "falsch" (0) übergeben. Der FileInput-Befehl wird benutzt, um die Daten einzulesen.

    Beispiel:

      If WriteFile(0,"ram:test")  ;Versuch, File zu schreiben
        FileOutput 0              ;Print-Anweisungen in File 0
        Print "Hallo!"            ;'Hallo' in das File schreiben
        CloseFile 0               ;File schließen
        DefaultOutput             ;voreingestellten Ausgabekanal nutzen
        If ReadFile(0,"ram:test") ;Versuch, File zu lesen
          FileInput 0             ;Eingabe aus File 0 holen
          NPrint Edit$(80)        ;aus dem File lesen und ausgeben
          CloseFile 0             ;File schließen
          DefaultInput            ;normaler Eingabekanal
          MouseWait
          End
        EndIf
      EndIf
      NPrint "'ram:test' konnte nicht geöffnet werden."
      MouseWait
    


    siehe auch: CloseFile, WriteFile, FileInput, FileOutput



    Index

    Funktion: WriteFile

    Syntax: WriteFile(File#,Filename$)

    Modus: Amiga


    WriteFile fertigt ein neues, sequentielles File mit Filename$ an und erlaubt das sequentielle Schreiben. Tauchte kein Fehler auf wird "richtig" (-1), anderenfalls "falsch" (0) übergeben. Verwenden Sie zum Datenschreiben die FileOutput-Anweisung.

    siehe auch: CloseFile, FileOutput, ReadFile, FileInput



    Index

    Befehl: CloseFile

    Syntax: CloseFile(File#)

    Modus: Amiga


    CloseFile schließt ein zuvor mit OpenFile, ReadFile oder WriteFile geöffnetes File. CloseFile sollte immer angewendet werden, wenn Files nicht mehr benutzt werden.

    siehe auch: OpenFile, ReadFile, WriteFile



    Index

    Befehl: Fields

    Syntax: Fields File#,Var[,Var...]

    Modus: Amiga/Blitz


    Setzt die Datenfelder eines Datenabschnittes (Record) im Randomfile. Die Übergabe der Variablen erfolgt mit Get (lesen) und Put (schreiben). Die Zeichenanzahl der Stringvariablen muß mit MaxLen festgelegt sein und darf niemals überschritten werden.

    Beispiel:

      If OpenFile(0,"ram:test")         ;öffne ein Randomfile
        MaxLen c$=32                    ;maximale Länge von c$ setzen
        Fields 0,a.f,c$,b.w             ;Felder im Record setzen
        a=Sqr(Pi)                       ;einige Variablen initialisieren
        b=16
        c$="RANDOM ACCESS!"
        Put 0,0                         ;Record 0 schreiben
        CloseFile 0                     ;File schließen
        If OpenFile(0,"ram:test")       ;und wieder öffnen
          Fields 0,a,b,c$               ;Felder neu setzen
          a=0                           ;Variablen löschen
          b=0
          c$=""
          Get 0,0                       ;Record 0 lesen
          NPrint "a=",a,"b=",b,"c$=",c$
          CloseFile 0                   ;File schließen
          MouseWait
          End
        EndIf
      EndIf
      NPrint "Datei 'ram:test' konnte nicht geöffnet werden."
      MouseWait
    


    siehe auch: OpenFile, CloseFile, Get, Put, MaxLen



    Index

    Befehl: Put

    Syntax: Put File#,Record

    Modus: Amiga


    Put wird benutzt, um Werte in einer Fields-Variablenliste in einen einzelnen Datenabschnitt (Record) eines Randomfiles zu übertragen. Wird Put benutzt, um das Direktzugriffsfile zu vergrößern, darf der nächste Datenabschnitt nur an das Ende des Files angehängt werden. Es ist zum Beispiel nicht erlaubt, in einem File mit 5 Datenabschnitten den 7. Datenabschnitt zu übertragen, bevor der 6. Datenabschnitt erzeugt wurde.

    siehe auch: OpenFile, CloseFile, Fields, Get



    Index

    Befehl: Get

    Syntax: Get File#,Record

    Modus: Amiga


    Get wird benutzt, um die Informationen eines einzelnen Datenabschnitts eines Direktzugriffsfiles in eine Variablenliste zu übertragen, die mit dem Fields-Kommando festgelegt wurde. Es können nur existierende Datenabschnitte übertragen werden.

    siehe auch: OpenFile, CloseFile, Fields, Put



    Index

    Befehl: FileOutput

    Syntax: FileOutput File#

    Modus: Amiga


    Leitet alle Print- und NPrint-Anweisungen auf das ausgewählte sequentielle File um. Nach dem Schließen des Files sollte der Printbefehl wieder auf einen aktuellen Ausgabekanal gelegt werden (z.B. DefaultOutput oder WindowOutput).

    siehe auch: WriteFile, CloseFile



    Index

    Befehl: FileInput

    Syntax: FileInput File#

    Modus: Amiga


    Als Eingabequelle für Edit, Edit$ und Inkey$ wird das ausgewählte sequentielle File benutzt. Nach dem Schließen des Files sollte die Eingabe wieder auf einen aktuellen Eingabekanal gelegt werden (z.B. DefaultInput oder WindowInput).

    siehe auch: ReadFile, CloseFile



    Index

    Befehl: FileSeek

    Syntax: FileSeek File#, Position

    Modus: Amiga


    Erlaubt das Bewegen bis zu einem bestimmten Punkt im File. Das erste Dataelement liegt an Position 0, das zweite an Position 1 usw. Position darf nicht größer sein als die Länge des Files. In Verbindung mit OpenFile und Lof kann FileSeek dazu benutzt werden, um das komplette File bis zum Ende einzulesen.

    Beispiel:

      If WriteFile(0,"ram:test")    ;Neues File erzeugen
        FileOutput 0                ;und Ausgabe umlenken
        NPrint "Hallo"              ;etwas schreiben
        CloseFile 0                 ;und das File schließen
        If OpenFile(0,"ram:test")   ;File wieder öffnen
          FileSeek 0,Lof(0)         ;suchen bis zum Fileende
          NPrint " There! "         ;etwas hinzufügen
          CloseFile 0               ;File schließen
          DefaultOutput             ;Ausgabe wieder zurücksetzen
          If ReadFile(0,"ram:test") ;File zum Lesen öffnen
            FileInput 0             ;Eingabe aus dem File
            NPrint Edit$(80)        ;File lesen und ausgeben
            NPrint Edit$(80)        ;dito
          EndIf
        EndIf
      EndIf
      NPrint "'ram:test' konnte nicht geöffnet werden."
      MouseWait
    


    siehe auch: OpenFile, CloseFile, Lof, Eof, Loc



    Index

    Funktion: Lof

    Syntax: Lof (File#)

    Modus: Amiga


    Übergibt die Länge eines gewählten Files in Bytes.

    siehe auch: OpenFile, CloseFile, Eof, Loc



    Index

    Funktion: Eof

    Syntax: Eof (File#)

    Modus: Amiga


    Meldet das Ende eines Files. Rückgabe -1: Fileende erreicht, Rückgabe 0: Fileende noch nicht erreicht.

    Beispiel:

      If WriteFile(0,"ram:test")  ;Neues File erzeugen
        FileOutput 0              ;Ausgabe in das File
        For k=1 to Rnd(50)+50     ;eine zufällige Anzahl
          Print Chr$(Rnd(26)+65)  ;zufälliger Zeichen schreiben
        Next
        CloseFile 0               ;File schließen
        DefaultOutput
        If ReadFile(0,"ram:test") ;File zum Lesen öffnen
          FileInput 0             ;Eingabe aus dem File
          While NOT Eof(0)        ;Solange Fileende nicht erreicht
            Print Inkey$          ;nächstes Zeichen ausdrucken
          Wend                    ;und weiter
          MouseWait
          End
        EndIf
      EndIf
      NPrint "'ram:test' konnte nicht geöffnet werden."
      End
    


    siehe auch: Lof, Loc



    Index

    Funktion: Loc

    Syntax: Loc (File#)

    Modus: Amiga


    Loc gibt die aktuelle Position im File an. Beim ersten Öffnen eines Files befinden Sie sich auf Position 0.

    siehe auch: Lof, Eof



    Index

    Befehl: DosBuffLen

    Syntax: DosBuffLen Bytes

    Modus: Amiga


    Alle AmBlitz2-Filezugriffe erfolgen über eine spezielle Pufferroutine. Dies erhöht die Geschwindigkeit des Filezugriffs, besonders bei sequentiellen Files. DosBuffLen ändert die Größe des Puffers; die Größenangabe erfolgt in Bytes. Voreingestellt ist eine Größe von 2048 Bytes. Bei zu wenig Speicher kann der Puffer verkleinert werden.



    Index

    Befehl: KillFile

    Syntax: KillFile Filename$

    Modus: Amiga


    KillFile löscht das mit Filename$ gewählte File. Konnte das File nicht gelöscht werden, wird keine Fehlermeldung zurückgegeben.



    Index

    Befehl: CatchDosErrs

    Syntax: CatchDosErrs

    Modus: Amiga/Blitz


    Normalerweise werden AmigaDos I/O Fehlermeldungen in einem Workbench- Window ausgegeben (z.B.: Beim Lesen und Schreiben eines Files, wenn sich keine Disk im Laufwerk befindet). Mit CatchDosErrs können Sie diese Fehlermeldungen auf ein AB2-Window umleiten. Benutzt wird das Window, das vor Ausführung von CatchDosErrs als zu benutzen angegeben wurde.

    Beispiel:

      Screen 0,3
      Window 0,0,12,320,DispHeight-12,$1008,"My Window",1,2
      CatchDosErrs                         ;Dos-Fehler auf unserem Bildschirm finden!
      If ReadFile(0,"dummydev:dummyfile")  ;Nonsensdevice
      Else
        Print "Can't open file!"
      EndIf
      Repeat                               ;warte...
      Until WaitEvent=$200                 ;bis das Fenster geschlossen wird
    




    Index

    Befehl: ReadMem

    Syntax: ReadMem File#,Adresse,Länge

    Modus: Amiga


    Erlaubt das Einlesen einer mit Länge festgelegten Anzahl von Bytes aus einem geöffneten File an eine absolute Speicheradresse, die mit Adresse festgelegt wird.

    Vorsicht! Sie sollten genau wissen, was Sie tun. Nur für fortgeschrittene User.

    siehe auch: WriteMem



    Index

    Befehl: WriteMem

    Syntax: WriteMem File#,Adresse,Länge

    Modus: Amiga


    Wie ReadMem, hier wird allerdings ein Speicherbereich als anzugebenes File# abgespeichert.

    siehe auch: ReadMem






    Impressum
    Copyright © 2001-2007 by Cj-Stroker. Alle Rechte vorbehalten (Legal Info)
    AMIGA und zugehörige Logos sind eingetragene Warenzeichen von Amiga, Inc.