Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Sonstige Fragen zu Delphi (https://www.delphipraxis.net/19-sonstige-fragen-zu-delphi/)
-   -   Delphi Umgang mit "File of array" (https://www.delphipraxis.net/114878-umgang-mit-file-array.html)

SebE 2. Jun 2008 10:42


Umgang mit "File of array"
 
Hallo Leute, ich probier grad bissl mit Files rum und bin auf folgende Frage gestoßen:

Delphi-Quellcode:
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;

...
wie man sieht, will ich immer blockweise eine file auslesen.
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.

Klaus01 2. Jun 2008 10:51

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

SebE 2. Jun 2008 10:56

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?

Klaus01 2. Jun 2008 11:06

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

SebE 2. Jun 2008 11:29

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