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 ?
Unterschied Blockread - Fileread
-
- 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
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
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
-
- 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
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 ?
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 ?
Re: Unterschied Blockread - Fileread
Ich verwende meistens TFileStream: https://www.freepascal.org/docs-html/rt ... tream.html S.a. "Size" Property
http://wiki.freepascal.org/File_Handlin ... _to_a_file
http://wiki.freepascal.org/File_Handlin ... _to_a_file
-
- 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
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 )