Unterschied Blockread - Fileread

Für Fragen von Einsteigern und Programmieranfängern...
Antworten
malabarista
Beiträge: 321
Registriert: Sa 11. Jun 2016, 12:16
OS, Lazarus, FPC: Linux Mint 18.1 L1.6.2-1 FPC 3.0.0
CPU-Target: 64Bit
Wohnort: Konstanz

Unterschied Blockread - Fileread

Beitrag von malabarista »

Mir ist der Unterschied zwischen verschiedenen Formen des Öffnens und Lesens von Dateien nicht klar.

Zum einen gibt es:
Fileopen(z,params), Fileread/Filewrite , Fileclose

zum anderen
reset(f), Blockread/Blockwrite,closefile

Was sind da die Unterschiede bzw. genauer: wann sollte ich welche Variante wählen ?

Benutzeravatar
theo
Beiträge: 10467
Registriert: Mo 11. Sep 2006, 19:01

Re: Unterschied Blockread - Fileread

Beitrag von theo »

Assignfile etc. ist die "alte" Pascal Variante des Zugriffs.

FileOpen etc. kapselt ungefähr das entsprechende Windows API z.B. https://msdn.microsoft.com/en-us/librar ... 65430.aspx

S.a. http://wiki.freepascal.org/File_Handling_In_Pascal

malabarista
Beiträge: 321
Registriert: Sa 11. Jun 2016, 12:16
OS, Lazarus, FPC: Linux Mint 18.1 L1.6.2-1 FPC 3.0.0
CPU-Target: 64Bit
Wohnort: Konstanz

Re: Unterschied Blockread - Fileread

Beitrag von malabarista »

ok.

Aber wie bestimme ich bei Nutzung dieser "Windows Api" die aktuelle Dateigrösse ?
Filesize('datei.txt') liefert mir zwar eine Grösse, aber die stimmt unter Windows nicht.
Nämlich dann nicht, wenn ich vorher mit Filewrite etwas ans Ende der Datei geschrieben (=angefügt) habe und noch kein Fileclose auf diese Datei gemacht habe.
Kann ich diese aktuelle Grösse nur über ein Fileseek(..,0,fsFromEnd) ermitteln ? Oder gibt es noch eine andere Möglichkeit ?

Benutzeravatar
theo
Beiträge: 10467
Registriert: Mo 11. Sep 2006, 19:01

Re: Unterschied Blockread - Fileread

Beitrag von theo »


marcov
Beiträge: 1100
Registriert: Di 5. Aug 2008, 09:37
OS, Lazarus, FPC: Windows ,Linux,FreeBSD,Dos (L trunk FPC trunk)
CPU-Target: 32/64,PPC(+64), ARM
Wohnort: Eindhoven (Niederlande)

Re: Unterschied Blockread - Fileread

Beitrag von marcov »

malabarista hat geschrieben:ok.

Aber wie bestimme ich bei Nutzung dieser "Windows Api" die aktuelle Dateigrösse ?
Filesize('datei.txt') liefert mir zwar eine Grösse, aber die stimmt unter Windows nicht.
Nämlich dann nicht, wenn ich vorher mit Filewrite etwas ans Ende der Datei geschrieben (=angefügt) habe und noch kein Fileclose auf diese Datei gemacht habe.


Keine Pascal Lösung, aber vielleicht windows.flushfilebuffers auf der Handle anrufen (https://msdn.microsoft.com/en-us/librar ... 39(v=vs.85).aspx )

Antworten