Binär-Datei einlesen und wieder neu ausgeben bekomme ich nicht hin.

  • Hallo, guten Tag.
    Ich bekomme das mit den Open für Daten als Byte nicht hin.
    Brauche bitte einmal Hilfe.

    Ich möchte aus eine Datei test32.rbf die Daten in test32-1.rbf einlesen , die Daten sind ein fertiger Kopf für die RBF.
    Dann möchte ich die Datei test32-1.rbf erweitern mit den Daten von daten.raw

    Zweite Frage bitte:
    Wie kann man bitte eine Binärdatei mit einem Schwung in den Poke/Peekspeicher einlesen und wieder rausholen?
    Größe ist nicht mehr wie 64000 Byte.

    Danke.


    Musterdatei:
    files$="d:\pcgeos\userdata\r-basic\font\test32.rbf" >>>>> diese Datei ist vorhanden (Binärdatei)
    files1$="d:\pcgeos\userdata\r-basic\font\test32-1.rbf" >>>>>> diese Datei wird neu erschaffen (Binärdatei)
    files2$="d:\pcgeos\userdata\r-basic\font\daten.raw" >>>>>> diese Datei ist vorhanden (Binärdatei)

    Einmal editiert, zuletzt von Funkheld (19. Dezember 2023 um 09:59)

  • Das Konstrukt

    open files$ for binary as #1


    gibt es in R-BASIC so nicht. Der entsprechende Befehl heißt FileOpen und dazu gibt es in Handbuch ("Spezielle Themen", Vol. 1) ein sehr ausführliches Kapitel, inklusiver Lesen und Schreiben von Binärdateien. Das möchte ich hier jetzt natürlich nicht alles wiedergeben.
    Rainer

    Es gibt 10 Arten von Menschen - die einen wissen was binär ist, die anderen nicht.

  • Ich würde sagen, die 16 KB bedeuten hier, daß du maximal 16 KB Daten auf einmal aus der Datei einlesen kannst.
    Ist die Datei größer, mußt du mehrmals Daten einlesen.
    Die Variable, in die du die Daten einliest, braucht aber auch die passende Größe. In deinem Beispiel oben liest du in die Variable value ein, die vom Datentyp BYTE ist. Das heißt, du liest immer nur ein Byte ein, so daß die 16-KB-Grenze gar keine Rolle spielt.

    Code
    //anderes Basic
    dim value as byte
    get #1, , value
    
    
    //R-Basic
    dim value1 as byte
    value1 = FileRead (fh1, 1)
    //oder
    value1 = FileRead (fh1, sizeof(value1))
  • Der Trick ist: R-Basic merkt sich vollkommen automatisch, wo das letzte Lesen/Schreiben endete. Bei Deiner nächsten Aktion macht R-Basic dann genau dort weiter, wo Du aufgehört hast. So kannst Du Häppchen für Häppchen auch riesige Dateien verarbeiten.
    Falls Du eine Analogie zur realen Welt benötigst: Du drückst während des Abspielens bei einem Kassettenrekorder, CD-Player, DVD-Player, … auf „Pause“, um das bislang Abgespielte zu verarbeiten und Dir ein Bierchen zu holen. Drückst Du dann auf „Weiter“, geht es dort weiter, wo Du vorhin aufgehört hast. Du musst Dir nicht alles wieder von vorne vorspielen lassen. (Natürlich kannst Du nach jedem FileRead auch innerhalb der Datei vor- und zurückspulen.)

    There are two rules in life:
    1. Never give out all of the information.