[gelöst]Dateizugriff zur Laufzeit eines Programmes sperren

Rund um die LCL und andere Komponenten
Antworten
Ieyasu
Beiträge: 7
Registriert: Fr 24. Nov 2006, 16:44

[gelöst]Dateizugriff zur Laufzeit eines Programmes sperren

Beitrag von Ieyasu »

Hallo,

ich möchte gerne solange mein Programm läuft die Datei die von diesem benutzt wird sperren für einen Zugriff von anderen Programmen. Das Laden und Speichern erfolgt über TStreamfile und beim Schreiben ist auch fmshareexclusive gesetzt, allerdings sind sowohl das Laden als auch das Speichern als eigene Prozeduren erstellt die nach dem Laden bzw. Speichern die Datei wieder freigeben über .free und somit funktioniert das nicht. Primär wird beim Start des Programmes die Datei geladen und in ein Record übertragen. Beim Schließen bzw. Speichern wird die Datei überschrieben. Idee wäre aufgrund einer Beschreibung mit Lockfile und unlockfile wie in einem Thread hier im Forum zu arbeiten, allerdings habe ich gehofft es gäbe eine elgantere Lösung für die ich als Amateur leider nicht genug weiß.

Vielen Dank schon im Voraus.
Zuletzt geändert von Ieyasu am Do 6. Feb 2020, 21:12, insgesamt 1-mal geändert.

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: Dateizugriff zur Laufzeit eines Programmes sperren

Beitrag von Socke »

Die elegante Lösung wäre wohl das Laden und Speichern immer auf einem TStream durchzuführen, d.h. deine Lade- und Speicherfunktionen ein wenig umbauen.
Die Datei kann dann mit einem TFileStream zu Programmstart geöffnet und gesperrt und beim Beenden entsperrt werden.
MfG Socke
Ein Gedicht braucht keinen Reim//Ich pack’ hier trotzdem einen rein

Ieyasu
Beiträge: 7
Registriert: Fr 24. Nov 2006, 16:44

Re: Dateizugriff zur Laufzeit eines Programmes sperren

Beitrag von Ieyasu »

Socke hat geschrieben:Die elegante Lösung wäre wohl das Laden und Speichern immer auf einem TStream durchzuführen, d.h. deine Lade- und Speicherfunktionen ein wenig umbauen.
Die Datei kann dann mit einem TFileStream zu Programmstart geöffnet und gesperrt und beim Beenden entsperrt werden.


Danke erstmal:
Genau das hat funktioniert Öffnen beim programmstart als fmOpenreadwrite or fmshareexclusive und bei OnClose schließen . Musste nur eine Abfrage für das Erstellen schaffen falls sie gar nicht da war. Super danke.

Antworten