![]() |
Umgang mit "File of array"
Hallo Leute, ich probier grad bissl mit Files rum und bin auf folgende Frage gestoßen:
Delphi-Quellcode:
wie man sieht, will ich immer blockweise eine file auslesen.
const
BUF_MAX = 200; type buf: array[0..BUF_MAX] of CHAR; var f: file of buf; b: buf; ... assignFile(f, 'a.txt'); reset(f); while not eof(f) do begin read(f, b); ... end; ... die Datei hat eine unbekannte Länge -> muss kein Vielfaches von BUF_MAX sein. angenommen, beim letzten Lesezugriff besitz die File noch 50 Zeichen -> Zugriffsfehler! Wie kann ich das Umgehen, ohne die Zeichen alle einzeln zu laden (also mit file of CHAR)? Vielen Dank für Antworten oder Hinweise. |
Re: Umgang mit "File of array"
Guten Morgen,
Du könntest die Filesize ganzzahling durch die Buffergröße teilen damit hast Du dann die Anzahl der Lesevorgänge. Oder nach jedem Lesen prüfen wo der Dateizeiger steht (FilePos) und die Differenz zur Dateigröße ermitteln, ist sie größer dann kann ein weiterer Lesevorgang durchgeführt werden. Grüße Klaus |
Re: Umgang mit "File of array"
stimmt schon, das ist eine Möglichkeit,
aber dann müsste ich entweder die letzten Zeichen ignorieren oder halt mit "file of CHAR" laden (was ich umgehen möchte). Ich Suche eine Möglichkeit mit einem mal den gesamten Puffer zu laden. Falls Datei-Ende, dann zB den Rest des Puffer mit Nullen auffüllen. Hab ich wohl schlechte Karten, was? |
Re: Umgang mit "File of array"
Hallo,
es gibt ja noch mehr Möglichkeiten. a) Datei in ein FileStream einlesen und Deinen Buffer aus dem FileStream stückweise einlesen b) Du könntest Dir einmal FileOpen, FileRead anschauen. Wenn Du mit FileRead arbeitest kracht es nicht wenn Du über das Dateiende liest. Es werden nur weniger Zeichen in den Buffer eingelesen. Grüße Klaus |
Re: Umgang mit "File of array"
Das ist Klasse, Wunderbar...vielen Dank.
Schöne Woche noch |
Alle Zeitangaben in WEZ +1. Es ist jetzt 05:33 Uhr. |
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024-2025 by Thomas Breitkreuz