flush : nur für textdateien ?

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

flush : nur für textdateien ?

Beitrag von malabarista »

Flush lässt sich nur für Textdateien aufrufen.

Ist bei einem anderen File kein flush notwendig ?
Oder wie kann ich dort erreichen, dass der Buffer wirklich geschrieben wird ?

Mathias
Beiträge: 6162
Registriert: Do 2. Jan 2014, 17:21
OS, Lazarus, FPC: Linux (die neusten Trunk)
CPU-Target: 64Bit
Wohnort: Schweiz

Re: flush : nur für textdateien ?

Beitrag von Mathias »

Bis jetzt hat bei mir immer CloseFile(f) gereicht.
Mit Lazarus sehe ich grün
Mit Java und C/C++ sehe ich rot

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: flush : nur für textdateien ?

Beitrag von marcov »

Ja, das ist ein bekanntes Problem:

http://bugs.freepascal.org/view.php?id=15824

Socke
Lazarusforum e. V.
Beiträge: 3158
Registriert: Di 22. Jul 2008, 19:27
OS, Lazarus, FPC: Lazarus: SVN; FPC: svn; Win 10/Linux/Raspbian/openSUSE
CPU-Target: 32bit x86 armhf
Wohnort: Köln
Kontaktdaten:

Re: flush : nur für textdateien ?

Beitrag von Socke »

marcov hat geschrieben:Ja, das ist ein bekanntes Problem:

http://bugs.freepascal.org/view.php?id=15824

Ich dachte, die Funktion Flush() übergibt den internen Puffer an das Betriebssystem; da nur Textdateien unter Free Pascal einen internen Puffer haben, braucht man für andere Dateien den Befehl Flush() nicht.

In dem Bug sind Methoden vorgeschlagen, die das Betriebssystem auffordern die Betriebssystem-Puffer auf die Festplatte zu schreiben.
MfG Socke
Ein Gedicht braucht keinen Reim//Ich pack’ hier trotzdem einen rein

Mathias
Beiträge: 6162
Registriert: Do 2. Jan 2014, 17:21
OS, Lazarus, FPC: Linux (die neusten Trunk)
CPU-Target: 64Bit
Wohnort: Schweiz

Re: flush : nur für textdateien ?

Beitrag von Mathias »

Schreibt das Betriebssystem nicht automatisch den Puffer auf die Platte ?
Mit Lazarus sehe ich grün
Mit Java und C/C++ sehe ich rot

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: flush : nur für textdateien ?

Beitrag von malabarista »

Mein Problem ist: die Datei wird erst geschlossen am Ende des Programms.
Ich möchte einem Stromausfall (mit Datenverlust) vorbeugen und deshalb immer nach wichtigen Datentransfers alles auf die Platte schreiben.
Closefile ist problematisch, weil danach wieder ein open erfolgen müsste, was in diesem Fall mit zeitlich längeren Operationen verbunden ist (Indizes aufbauen).
Wegen dieses Zeitverzuges scheidet ein wiederholtes open aus.
Deshalb wäre ein flush eine gute Lösung.

Benutzeravatar
af0815
Lazarusforum e. V.
Beiträge: 6198
Registriert: So 7. Jan 2007, 10:20
OS, Lazarus, FPC: FPC fixes Lazarus fixes per fpcupdeluxe (win,linux,raspi)
CPU-Target: 32Bit (64Bit)
Wohnort: Burgenland
Kontaktdaten:

Re: flush : nur für textdateien ?

Beitrag von af0815 »

malabarista hat geschrieben:Closefile ist problematisch, weil danach wieder ein open erfolgen müsste, was in diesem Fall mit zeitlich längeren Operationen verbunden ist (Indizes aufbauen).
Wegen dieses Zeitverzuges scheidet ein wiederholtes open aus.

Machst du eine DB 'zu Fuß' ? EIn Close/Open dauert ja ansonsten nicht die Welt.
Blöd kann man ruhig sein, nur zu Helfen muss man sich wissen (oder nachsehen in LazInfos/LazSnippets).

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: flush : nur für textdateien ?

Beitrag von malabarista »

ja, so etwas ähnliches.

Socke
Lazarusforum e. V.
Beiträge: 3158
Registriert: Di 22. Jul 2008, 19:27
OS, Lazarus, FPC: Lazarus: SVN; FPC: svn; Win 10/Linux/Raspbian/openSUSE
CPU-Target: 32bit x86 armhf
Wohnort: Köln
Kontaktdaten:

Re: flush : nur für textdateien ?

Beitrag von Socke »

malabarista hat geschrieben:Mein Problem ist: die Datei wird erst geschlossen am Ende des Programms.
Ich möchte einem Stromausfall (mit Datenverlust) vorbeugen und deshalb immer nach wichtigen Datentransfers alles auf die Platte schreiben.
Closefile ist problematisch, weil danach wieder ein open erfolgen müsste, was in diesem Fall mit zeitlich längeren Operationen verbunden ist (Indizes aufbauen).

In diesem Fall sind die Funktionen unter http://bugs.freepascal.org/view.php?id=15824 die richtigen.
MfG Socke
Ein Gedicht braucht keinen Reim//Ich pack’ hier trotzdem einen rein

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: flush : nur für textdateien ?

Beitrag von malabarista »

ok.

Antworten