Unterschied Blockread - Fileread

Für Fragen von Einsteigern und Programmieranfängern...

Unterschied Blockread - Fileread

Beitragvon malabarista » 11. Mai 2017, 11:02 Unterschied Blockread - Fileread

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 ?
malabarista
 
Beiträge: 210
Registriert: 11. Jun 2016, 11:16
Wohnort: Konstanz
OS, Lazarus, FPC: Linux Mint 18.1 L1.6.2-1 FPC 3.0.0 | 
CPU-Target: 64Bit
Nach oben

Beitragvon theo » 11. Mai 2017, 11:24 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
theo
 
Beiträge: 7866
Registriert: 11. Sep 2006, 18:01

Beitragvon malabarista » 12. Mai 2017, 11:30 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 ?
malabarista
 
Beiträge: 210
Registriert: 11. Jun 2016, 11:16
Wohnort: Konstanz
OS, Lazarus, FPC: Linux Mint 18.1 L1.6.2-1 FPC 3.0.0 | 
CPU-Target: 64Bit
Nach oben

Beitragvon theo » 12. Mai 2017, 11:40 Re: Unterschied Blockread - Fileread

theo
 
Beiträge: 7866
Registriert: 11. Sep 2006, 18:01

Beitragvon marcov » 12. Mai 2017, 15:23 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 )
marcov
 
Beiträge: 988
Registriert: 5. Aug 2008, 08:37
Wohnort: Eindhoven (Niederlande)
OS, Lazarus, FPC: Windows ,Linux,FreeBSD,Dos (L trunk FPC trunk) | 
CPU-Target: 32/64,PPC(+64), ARM
Nach oben

• Themenende •

Zurück zu Einsteigerfragen



Wer ist online?

Mitglieder in diesem Forum: Google [Bot] und 1 Gast

porpoises-institution
accuracy-worried