[gelöst]Ist eine Datei in Nutzung/Netzlaufwerk und von Wem

Für Fragen von Einsteigern und Programmieranfängern...
Antworten
Ieyasu
Beiträge: 7
Registriert: Fr 24. Nov 2006, 16:44

[gelöst]Ist eine Datei in Nutzung/Netzlaufwerk und von Wem

Beitrag von Ieyasu »

Hi,

ich nutze mein Programm um auf eine Datei auf einem Netzlaufwerk zuzugreifen und diese wird dann mit fmsharexclusive geöffnet und erst bei Schliessen des Programmes wieder freigegeben. Funktioniert soweit tadellos. Mein Problem ist das natürlich beim Versuch eines anderen mit dem selben Programm auf einem anderen Rechner auf die gleiche Datei zuzugreifen nicht so ein schöne Meldung kommt wie die Datei ist derzeit in Nutzung von.... kommt, sondern eine sehr unschöne Fehlermeldung mit Abort etc (auch wenn ich einfach noch eine Programminstanz öffnen will).

Im Netz hatte ich eine Funktion über die Unit Windows gefunden (ob ein File schon genutzt wird) , die aber zu verschiedenen anderen Fehlern die es bis dahin nicht gab geführt hat (insb. bei Rect etc.) so das ich sie lieber wieder entfernt habe.
Wie kann ich ohne diese Unit feststellen ob eine Datei gesperrt ist und wenn ja von wem (Thema GetUserName Windows bzw. Unit Users aber halt von dem der sie im Netzwerk sperrt..). Hab das Gefühl das übersteigt gerade mein Wissen doch etwas sehr..
Zuletzt geändert von Ieyasu am Fr 7. Feb 2020, 20:05, insgesamt 1-mal geändert.

MacWomble
Lazarusforum e. V.
Beiträge: 977
Registriert: Do 17. Apr 2008, 01:59
OS, Lazarus, FPC: Mint 19.3 Cinnamon / FPC/Lazarus
CPU-Target: Intel i7 64/32 Bit
Wohnort: Freiburg

Re: Ist eine Datei in Nutzung/Netzlaufwerk und von Wem

Beitrag von MacWomble »

Du könntest z.B. beim Öffnen der Datei eine Datei (lock.ini oder so) anlegen, in welcher der Benutzer der Datei hinterlegt ist. Beim Schließen der Datei wirfst du die lock.ini wieder weg. So kannst du die Lock-Datei auslesen und sinnvolle Info anzeigen, wenn ein Lockdatei vorhanden ist - ansonsten legst du sie an und öffnest das eigentliche File. Das ganze ist dann auch unabhängig vom BS.
Du könntest so auch weitere Informationen bereitstellen, z.B. seit wann die Datei in Verwendung ist ...
Alle sagten, dass es unmöglich sei - bis einer kam und es einfach gemacht hat.

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

Re: Ist eine Datei in Nutzung/Netzlaufwerk und von Wem

Beitrag von af0815 »

Ieyasu hat geschrieben:Wie kann ich ohne diese Unit feststellen ob eine Datei gesperrt ist und wenn ja von wem (Thema GetUserName Windows bzw. Unit Users aber halt von dem der sie im Netzwerk sperrt..). Hab das Gefühl das übersteigt gerade mein Wissen doch etwas sehr..

Grundlegend ist das Feststellen einer Sperrung in einem Netzwerkshare nicht besonders einfach zu machen. Du kannst nur versuchen ein Handle darauf zu bekommen, wenn nicht, dann halt die geworfene Exception abfangen.
Auf weitere Informationen kannst du dich nicht verlassen. Wenn es gut geht kommst du maximal an eine SID, nur wenn deinem System die bekannt ist, kann man damit einen Namen erhalten.

Für mich stellt sich jetzt einmal die Frage wozu das ganze und warum eine Datei die ganze Zeit sperren. Meiner Meinung nach keine gute Idee, sondern IMHO schlechtes Design.
Da ist die Idee von McWomble besser, da eine Sperrdatei mit Infos zu hinterlegen. Wenn du in deinem Programm zyklisch da einen Timestamp hineinschreibst, Kann ein anders Programm sogar feststellen, ob die Sperre noch zu recht besteht oder ein toter Lock ist. In der Sperrdatei ist natürlich Platz für jede Menge Informationen :-)
Blöd kann man ruhig sein, nur zu Helfen muss man sich wissen (oder nachsehen in LazInfos/LazSnippets).

mschnell
Beiträge: 3408
Registriert: Mo 11. Sep 2006, 10:24
OS, Lazarus, FPC: svn (Window32, Linux x64, Linux ARM (QNAP) (cross+nativ)
CPU-Target: X32 / X64 / ARMv5
Wohnort: Krefeld

Re: Ist eine Datei in Nutzung/Netzlaufwerk und von Wem

Beitrag von mschnell »

... Oder statt einer Datei eine Datenbank nehmen.
-Michael

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

Re: Ist eine Datei in Nutzung/Netzlaufwerk und von Wem

Beitrag von af0815 »

DB-Datei auf einem Share ist eine ganz schlechte Idee oder war da was anderes gemeint. Und die Desktopdatenbanken diw das versuchen, arbeiten auch mit Lockfiles.
Blöd kann man ruhig sein, nur zu Helfen muss man sich wissen (oder nachsehen in LazInfos/LazSnippets).

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

Re: Ist eine Datei in Nutzung/Netzlaufwerk und von Wem

Beitrag von Ieyasu »

Hi,

erstmal vielen Danke an McWomble das war die Lösung und dazu noch einfach und logisch nur kam ich überhaupt nicht drauf und hab damit auch das Sperren raus siehe Af0815 Thema schlechtes Design.
Vielen Vielen Dank.

Antworten