Hallo zusammen,
ich möchte mein Programm um die Möglichkeit des fortlaufenden Speicherns von Strings erweitern.
Von einer Maschine bekomme ich alle paar Minuten Daten die ich auswerte und in einen String im CSV-Format packe.
Jetzt möchte ich die Strings in eine Textdatei fortlaufend speichern. Ist eigentlich auch kein Problem, das
findet man im Netz genügend.
Wo ich jetzt schwer grüble, ist der grundsätzliche Ansatz.
Was ist für so was sinnvoll?
Bei jedem String den ich bekomme in alter Pascalweise Datei öffnen...String schreiben...Datei schließen.
Oder läßt man die Datei offen, also Datei öffnen...String schreiben...String schreiben...String schreiben...Datei schließen
Oder man schreibt sich die Daten z.B. in eine Stringlist und sammelt die im Ram und schreibt sie dann gesammelt als Packet in eine Datei.
Oder vielleicht noch ne andere Variante.
Gehen tut alles, krieg ich sicher auch hin, findet man na genug im Netz, aber welche Vorgehensweise ist da professionell?
Schon mal Danke im Vorraus für Infos
Gruß
NoCee
Logfile (Textdatei) schreiben, Ansatz?
-
- Beiträge: 6918
- Registriert: Do 2. Jan 2014, 17:21
- OS, Lazarus, FPC: Linux (die neusten Trunk)
- CPU-Target: 64Bit
- Wohnort: Schweiz
Re: Logfile (Textdatei) schreiben, Ansatz?
Wen du die Daten nur während das Programm-Ablaufes brauchst, reicht es, das Ganze im RAM zu speichern.
Ansonsten geht es nicht ohne öffnen, schreiben.....schreiben, schliessen.
Da die Daten nur alle paar Minuten ankommen, hast du locker Zeit die Daten auf die HD zu scheiben.
Ansonsten geht es nicht ohne öffnen, schreiben.....schreiben, schliessen.
Da die Daten nur alle paar Minuten ankommen, hast du locker Zeit die Daten auf die HD zu scheiben.
Mit Lazarus sehe ich grün
Mit Java und C/C++ sehe ich rot
Mit Java und C/C++ sehe ich rot
Re: Logfile (Textdatei) schreiben, Ansatz?
Hi,
?? hat das was mit professionell zu tun?
Ich finde, dass liegt an den Umgebungsbedingungen.
z.B. Stromausfälle, Signifikanz der Daten, Stabilität der Software und Hardware...
Was auf der Platte ist, ist auf der Platte...
Man kann ja auch per Timer speichern, dann ist es nicht zu oft...
?? hat das was mit professionell zu tun?
Ich finde, dass liegt an den Umgebungsbedingungen.
z.B. Stromausfälle, Signifikanz der Daten, Stabilität der Software und Hardware...
Was auf der Platte ist, ist auf der Platte...
Man kann ja auch per Timer speichern, dann ist es nicht zu oft...
Re: Logfile (Textdatei) schreiben, Ansatz?
Und wenn du die Daten auch nach dem Programmlauf noch brauchst, würde ich nicht nur Öffnen - Schreiben, Schreiben, ... - Schließen, sondern Öffnen - Schreiben - Schließen, Öffnen - Schreiben - Schließen, also nach jedem Schreibvorgang gleich wieder die Datei schließen. Denn wenn sich Programm oder Betriebssystem verabschieden, bleibt so die Logdatei erhalten. Falls, vom Empfang der Log-Meldungen abgesehen, zeitkritische Sachen im Hauptthread laufen, musst du das Öffnen/Schreiben/Schließen der Logdatei in einen eigenen Thread verlagern.
-
- Beiträge: 2121
- Registriert: Di 23. Sep 2014, 17:46
- OS, Lazarus, FPC: Win10 | Linux
- CPU-Target: x86_64
Re: Logfile (Textdatei) schreiben, Ansatz?
Ich würde es so machen:
Programmstart Datei Öffnen, ... Schreiben->Flushen, ... Schreiben->Flushen, Programmende: Datei Schließen. So sind die Daten immer sicher auf der Platte, den Hauptspeicher bleibt frei und du hast nicht so viele unnötige Kontextwechsel wie wenn du die Datei für jede Schreibaktion neu öffnest und Schließt.
Wenn dir Geschwindigkeit natürlich wichtiger ist als die Sicherheit die Daten auf der Platte zu haben, oder der Hauptspeicher, dann würde ich es über eine Interne Stringlist laufen lassen.
Kommt halt immer drauf an was für anforderungen denn noch gestellt sind, denn das Schreiben und Flushen ist recht langsam
Programmstart Datei Öffnen, ... Schreiben->Flushen, ... Schreiben->Flushen, Programmende: Datei Schließen. So sind die Daten immer sicher auf der Platte, den Hauptspeicher bleibt frei und du hast nicht so viele unnötige Kontextwechsel wie wenn du die Datei für jede Schreibaktion neu öffnest und Schließt.
Wenn dir Geschwindigkeit natürlich wichtiger ist als die Sicherheit die Daten auf der Platte zu haben, oder der Hauptspeicher, dann würde ich es über eine Interne Stringlist laufen lassen.
Kommt halt immer drauf an was für anforderungen denn noch gestellt sind, denn das Schreiben und Flushen ist recht langsam
-
- Beiträge: 174
- Registriert: Do 3. Mär 2011, 21:34
- OS, Lazarus, FPC: WinXp/7/10 Opensuse13.2/Leap15.3 (L 2.2.0 FPC 3.2.2 )
- CPU-Target: Intel 32/64Bit, ARM9
- Wohnort: Ulm
Re: Logfile (Textdatei) schreiben, Ansatz?
Danke für die schnellen Antworten.
Das ganze muß nicht besonders schnell sein, sind nicht viel Daten.
Es sollte aber nichts verloren gehen.
Ich werde das mal mit Datei öffnen, schreiben, flushen, schreiben....schließen versuchen.
Gruß
NoCee
Das ganze muß nicht besonders schnell sein, sind nicht viel Daten.
Es sollte aber nichts verloren gehen.
Ich werde das mal mit Datei öffnen, schreiben, flushen, schreiben....schließen versuchen.
Gruß
NoCee