Prüfen ob geöffnete Datei schreibgeschützt ist

Programmierung unter AOO/LO (StarBasic, Python, Java, ...)

Moderator: Moderatoren

Benutzeravatar
oktobaer
***
Beiträge: 69
Registriert: So, 18.01.2009 23:19
Wohnort: bei Nürnberg

Prüfen ob geöffnete Datei schreibgeschützt ist

Beitrag von oktobaer »

Hallo Ihr!

Habe ja hier im Forum den genialen Tipp bekommen wie man eine Datei unsichtbar öffnet.
Nun kann es passieren, dass zwei Anwendungen gleichzeitig darauf zugreifen, was im "nur lese Modus" auch funktioniert - erst beim Schreiben gibt es einen Fehler!

FRAGE: Kann ich beim Öffnen via:
FUNCTION MDB_Open
if Tracking%=1 then print"MDB_Open"
if MDBFileOpen%=0 then
oDesktop = createUnoService("com.sun.star.frame.Desktop")
Datei$=SetupRead(8,2)
Url = ConvertToUrl (Datei$)
dim p(0) as new com.sun.star.beans.PropertyValue
p(0).Name = "Hidden"
p(0).Value = true
Doc_B = StarDesktop.loadComponentFromURL(Url, "_default", 0, p())
MDBFileOpen%=1
end if
END FUNCTION
... prüfen ob die Datei schon geöffnet ist?

Danke!

Oktobaer
Servus
Claus
keksi1970
*****
Beiträge: 464
Registriert: So, 27.01.2008 11:47
Wohnort: DU

Re: Prüfen ob geöffnete Datei schreibgeschützt ist

Beitrag von keksi1970 »

hi,

wie wäre es mit

if Doc_B.IsReadonly = true then

funktioniert bei mir, wenn ich das dokument von anfang an schreibgeschützt öffne ^^

lg Andreas
sarotti
****
Beiträge: 105
Registriert: So, 12.03.2006 17:40
Wohnort: Nähe Krefeld

Re: Prüfen ob geöffnete Datei schreibgeschützt ist

Beitrag von sarotti »

Hallo Oktobaer

...hier eine Variante mit dem Auslesen der Datiattribute...

Code: Alles auswählen


if GetAttr(Url)=1 then  '1=schreibgeschützt
	msgBox "Die Datei ''"+sQuellDatei+"'' ist schreibgeschützt",16,"Abbruch"
	exit sub
end if
Du könntest im Fehlerfall aber auch den Fehler selber abfangen... "ON ERROR Goto ..."

Gruss
sarotti
Benutzeravatar
oktobaer
***
Beiträge: 69
Registriert: So, 18.01.2009 23:19
Wohnort: bei Nürnberg

Re: Prüfen ob geöffnete Datei schreibgeschützt ist

Beitrag von oktobaer »

Hallo Ihr!

Habe das "on error" und das mit getattrib ausprobiert.
Leider erkennt das Makro so nicht ob die Datei schon von einer anderem Benutzer belegt ist.
Habe immer nur 32 ausgelesen (Archivbit).

Gelöst habe ich es jetzt dadurch, dass ich beim Öffnen der Datei mit

Code: Alles auswählen

SetAttrib url,1
die Datei aktiv auf ReadOnly setze, damit weitere Anwendungen gesperrt sind.
Allerdings muss bei Schreibvorgängen und beim Speichern kurzzeitig mit

[

Code: Alles auswählen

etAttrib url,0
wieder Schreiben zugelassen werden.

Mal sehen ob sich diese Taktik in der Praxis bewährt!

Danke für Eure Hilfe!


Oktobaer


Zuletzt als neu markiert von oktobaer am Di, 14.07.2009 22:44.
Servus
Claus
Antworten