Anmerkungen zu den Datei-Formaten ==================================== IPW-Dateien und IPZ-Dateien ---------------------------- IPW-Dateien bauen auf dem Compound File Binary Format von Microsoft auf (auch Microsoft COM Structured Storage genannt), siehe auch https://en.wikipedia.org/wiki/Compound_File_Binary_Format. Dieses Dateiformat wird auch z. B. in XLS-Dateien (Excel) verwendet. Compound-Dateien bestehen aus Storages (Verzeichnissen). In den Storages können Streams (Dateien) mit beliebigem Inhalt und weitere Storages enthalten sein. Die Größe von Compound-Dateien ist auf 2 GB beschränkt. Das Compound-File-Format unterstützt Transaktionen, d. h. es können Änderungen an der Datei vorgenommen werden, die erst beim Commit in die Datei geschrieben werden. Wenn das Commit fehl schlägt ist die ursprüngliche Datei unverändert. IPZ-Dateien bauen auf dem UPDF-Dateiformat auf, siehe :ref:`overview-UPDF-files`. .. index:: Autosave Autosave ............................ IPZ-Dateien werden bei der Bearbeitung automatisch von Zeit zu Zeit gesichert. Dazu wird das Unterverzeichnis ``AutoSave`` des UniPlot-User-Verzeichnisses (siehe :ref:`GetUserDirectory`) verwendet. .. highlightlang:: us :: GetUserDirectory(1) + "AutoSave\\" // C:\Users\\AppData\Local\UniPlot\AutoSave\ .. _copy-on-open: Kopieren beim Öffnen ............................ UniPlot verwendet den wahlfreien Zugriff (random access) um Dokumente zu laden. Bei einem mehrseitigen Dokument wird zunächst nur eine Seite geladen, und erst beim Umschalten der Seite die nächste Seite. Diese Art des Zugriffs ist optimal bei lokalen Festplatten, SSD-Laufwerken, USB-Laufwerken und USB-Sticks. Bei langsamen Netzlaufwerken auf die viele Anwender zugreifen, ist aber der sequentielle Zugriff wesentlich günstiger. Ab UniPlot R2016 können deshalb Dokumente die sich auf Netzlaufwerken befinden, zunächst auf die lokale Festplatte kopiert werden. Nach der Bearbeitung werden die Dokument-Dateien wieder zurück kopiert. Wird nur bei IPZ-Dateien und nicht bei den veralteten IPW-Dateien durchgeführt. Falls die IPZ-Datei auf einem Netzlaufwerk ist, wird sie zunächst auf ein lokales Laufwerk kopiert und gesperrt. Beim Kopieren wird eine abbrechbare Fortschrittsanzeige angezeigt, wenn die Datei größer als 1 MB ist. Im Fenster wird der Original-Dateiname angezeigt. Falls die Lock-Datei nicht erzeugt werden kann, wird die Datei read-only geöffnet. Beteiligte Dateien: * Quelldatei: Ist die IPZ-Datei auf dem Netzlaufwerk. * lock-Datei: Eine Text-Datei die den Benutzer- und Computer-Name und die UUID der Datei im ``LocalStore`` beinhaltet. * bak-Datei: * uuid-Datei: Kopie der Quell-Datei. Die Datei wird auf dem lokalen Rechner im Unterverzeichnis ``LocalStore`` des UniPlot-User-Verzeichnisses (siehe :ref:`GetUserDirectory`) gespeichert. Für den Dateinamen wird eine UUID (siehe :ref:`uuid`) verwendet. * jnl-Datei: Journal-Datei. Die Datei wird beim Öffnen einer IPZ-Datei erzeugt und beim Schließen der Datei wieder gelöscht. Im Fehlerfall oder bei Stromausfall ermöglicht die Journal-Datei das Zurücksetzen der IPZ-Datei in den Ursprungszustand. * info-Datei: Text-Datei im ``LocalStore``, die den Quelldatei-Namen mit Pfad enthält. Die info-Datei hat den gleichen Namen wie die uuid-Datei mit der Extension ``.info``. Wenn ein zweiter Anwender die Quelldatei öffnen will, kann er sie (nach Rückfrage) als Kopie öffnen. Er sieht dann den Namen "Name (Kopie).ipz" Wenn die Datei geschlossen werden soll, Abfrage "Änderungen speichern? - Ja/Nein" Nein: Die lokale uuid-Datei wird geschlossen, die lock-Datei im Quell-Verzeichnis wird geschlossen und gelöscht, die uuid-Datei und die info-Datei werden gelöscht. Ja: 1. Die uuid-Datei wird gespeichert und geschlossen (Commit). Die folgenden Schritte finden entweder in UniPlot statt (mit Progress) oder optional im Hintergrund über zweiten Prozess (mit Progress): 2. Packen der uuid-Datei mit :ref:`ipz_pack`. 3. Kopieren der gepackten uuid-Datei in das Verzeichnisse der Quelldatei. 4. ``quelle.bak`` löschen, falls vorhanden. 5. Umbenennen der Ursprungsdatei => ``quelle.bak``. 6. Umbenennen der neuen uuid-Datei in ``quelle.ipz``. 7. lock-Datei schließen und löschen. 8. bak-Datei löschen (optional). Probleme: Wenn die Option "Speichern im Hintergrund" eingeschaltet ist und der lokale Rechner abgeschaltet wird, sind Änderungen noch nicht gespeichert, sondern die neue Datei befindet sich noch im ``LocalStore``. Möglichkeiten der Verhinderung: * Der Hintergrundprozess gibt Progressdialog aus. * UniPlot lässt sich nicht beenden: "Bitte warten Sie, es sind noch Hintergrundprozesse aktiv! Trotzdem beenden?" Fehlerhandling: * Es werden 5 Dateien bearbeitet und Netzwerk-Stecker wird gezogen: Wenn nun Dateien gespeichert werden sollen, müssen Dateien unter anderem Namen gespeichert werden. Nach dem Beenden von UniPlot sollen sich keine Dateien mehr im uuid-Verzeichnis befinden. * UniPlot wird über Task-Manager beendet oder Stromausfall: Alle Dateien im uuid-Verzeichnis werden geladen und es werden die Autosave-Informationen angewendet. Optionen: copy-on-open: (Default: TRUE) IPZ-Dokument-Dateien auf Netz-Laufwerken vor Bearbeitung auf lokale Festsplatte kopieren. save-with-background-proccess: (Default: FALSE) remove-bak-file: (Default: FALSE) :sub:`id-1235746`