FileSize(S)

    Diese Seite verwendet Cookies. Durch die Nutzung unserer Seite erklären Sie sich damit einverstanden, dass wir Cookies setzen. Weitere Informationen

    Unsere Datenschutzerklärung wurde aktualisiert. Mit der Nutzung unseres Forums akzeptierst Du unsere Datenschutzerklärung. Du bestätigst zudem, dass Du mindestens 16 Jahre alt bist.

    • FileSize(S)

      Verständnisfrage :
      Ich will mit ReadText f#, datei$ eine Textdatei
      einlesen.

      Bei folgendem ist der Bereich zu klein :

      Quellcode

      1. Dim f#, FileSize(datei$)

      Wenn ich aber f# um 2 Bytes größer
      dimensioniere, klappt es :

      Quellcode

      1. Dim f#, FileSize(datei$) + 2


      Was sind das für 2 Bytes ?

      PS: wie oben muß ich immer einen temp. Bereich#
      dimensionieren, weil das hier nicht funktioniert :

      Quellcode

      1. Struct wert = nr&, anz&, artikel$(20), daten#(65000)
      2. Dim Bereich#, wert
      3. ReadText Bereich#.daten#, datei$
      4. oder
      5. ReadText .daten#, datei$


      Bereich#.daten# oder nur .daten# ist doch auch eine Bereichsvariable ?
    • ReadText schließt den Text mit 13+10 ab und endet auf 0. Eigentlich müßte der Bereich sogar FileSize+3 groß sein. Scheint aber nicht ganz so schlimm zu sein, wenn das abschließende Nullbyte nicht paßt?

      Bereich#.Daten# ist nicht ganz identisch mit einer einfachen Bereichsvariablen. Es wird nur in Bereich# die angegebene Anzahl Bytes für beliebige Daten reserviert. Befehle, die eine einfache Bereichsvariable als Parameter erwarten, können damit nicht arbeiten.

      Gruß Volkmar
    • Danke für die Info.
      Dachte, da ja jede Textzeile sowieso mit
      13 + 10 abgeschlossen wird, wäre das
      schon bei Filesize mitgerechnet.

      zu Bereich# :
      Das konnte ich schon erahnen, da sowas ja
      auch geht :

      Quellcode

      1. ber#.daten# = "Das ist ein Text" + Chr$(13) + Chr$(10) + "Und noch ein Text"


      Da müßte ja normalerweise sowas hin :

      Quellcode

      1. String ber#.daten#, 0 = "irgendwas"


      Nochmals danke für die Infos.
    • Eben habe ich mit ReadText mal gespielt. Falls die Datei nicht mit 13+10 abgeschlossen ist, muß die Bereichsvariable mindestens 4 Byte größer als das Ergebnis von FileSize sein! Und wird das Ergebnis des Lesevorgangs wieder in die Datei geschrieben, wird die bei jedem Durchlauf größer, es wird zwangläufig immer eine Leerzeile angehängt. Man sollte also etwas großzügig beim Dimmen des Bereichs sein und gut überlegen, was man mit dem Ergebnis macht.

      Gruß Volkmar
    • Zurückschreiben brauche ich nicht.
      Soll mal eine Artikel-Datenbank werden,
      die zu den Produkten neben Preis usw.
      auch einen Beschreibungstext beinhalten.
      Die Texte sollen dann in einem Memofeld
      gehalten und gespeichert werden.
      Später will ich dann noch Bilder zu den
      Produkten in einem Blob speichern.

      Quellcode

      1. Struct wert = nr&, Preis!, anz&, artikel$(30), daten#(10000), bild#(50000)


      Sowas wäre auch abgewandelt nützlich, um versch. Quellcodes
      von versch. Programmiersprachen zu verwalten.