Betriebssystemunabhängiger Speicherpfad
Moderator: Moderatoren
Betriebssystemunabhängiger Speicherpfad
Unter Windows kann ich mit msgbox Environ ("WinDir") das Windows Systemverzeichnis ermitteln. msgbox Environ ("Temp") bringt mir das Temp-Verzeichnis, in dem ich mal schnell rumschmieren kann. Das WinDir unter Linux nicht, war schon klar, aber auch Temp geht nicht. Gibt es eine Funktion, mit der ich unter jedem Betriebssystem einen definitiv vorhandenen Pfad ermitteln kann? Wie wäre es mit dem OO-Programmpfad?
Ciao
Niels
Ciao
Niels
Das hier sollte funktionieren:Wie wäre es mit dem OO-Programmpfad?
Code: Alles auswählen
Sub OO_programmpfad
oSettings = createUnoService("com.sun.star.frame.Settings")
oPathSettings = oSettings.getByName("PathSettings")
msgbox oPathSettings.ProgPath
End Sub
Stephan
hey,
Klar kann man die Umgebungsvariablen auslesen:
Läuft Systemunabhängig, allerdings möglicherweise mit unterschiedlichen Ergebnissen. "Home" gibt es eben nur unter Linux. Aber du kannst doch mit Schleifen arbeiten.
Gruss
Thomas
Klar kann man die Umgebungsvariablen auslesen:
Code: Alles auswählen
Sub Main
msgbox environ("path")
msgbox environ("home")
msgbox environ("temp")
End Sub
Gruss
Thomas
Unterstützer LibreOffice, zertifizierter Trainer und Berater
Bücher: LibreOffice 6- Einstieg und Umstieg
Makros Grundlagen - LibreOffice / OpenOffice Basic
Bücher: LibreOffice 6- Einstieg und Umstieg
Makros Grundlagen - LibreOffice / OpenOffice Basic
Home hört sich gut an
Für Home muss es doch auch etwas unter Windows geben um den Ordner "Eigene Dateien" zu ermitteln. Das wäre ja schick:
Würde das auch unter OS2 laufen, oder müsste ich da extra auf eine andere Umgebungsvariable abfragen?
Danke
Niels
Code: Alles auswählen
If environ("home") = "" then
MeinPfad = environ("WindowsHome")
else
MeinPfad = environ("home")
end if
Danke
Niels
Jo, tut es, aber ich irgendwie finde ich die Home-Geschichte genial. Wenn ich das lösen könnte, dann fallen mir da so einige andere Sachen ein, die man anstellen kann. Habe mal ein wenig gegoogelt, und bin auch fündig geworden. Leider geht es nur mit DLL-Aufruf und da bin ich an meinen Grenzen. Geht das überhaupt mit OO-Basic? Und nun darf ich den Aufruf ja auch nur dynamisch definieren, denn unter Linux oder OS2 würde diese Deklaratio ja zum qualifizierten Abflug führen.Stephan hat geschrieben:Das hier sollte funktionieren:Wie wäre es mit dem OO-Programmpfad?
GrußCode: Alles auswählen
Sub OO_programmpfad oSettings = createUnoService("com.sun.star.frame.Settings") oPathSettings = oSettings.getByName("PathSettings") msgbox oPathSettings.ProgPath End Sub
Stephan
Gruß
Niels
Alle Pfade, welche unter Extras>Optionen>openOffice.org>Pfade eingetragen sind lassen sich unter Verwendung des Services com.sun.star.util.PathSettings abfragen oder setzen. Diese Abfrage ist unabhängig vom Betriebssystem, allerdings müssen die Pfade gegebenenfalls umgewandelt werden, da die Rückgabe in der spezifischen URL-Notation von Openoffice erfolgt. Hier ist ein Beispiel für "home" oder "Eigene Dateien":
Gruß
Stephan
Code: Alles auswählen
Sub home
Path=createunoservice("com.sun.star.util.PathSettings")
msgbox path.work
End Sub
Gruß
Stephan
Danke, das ist doch prima. Die Umwandlung ist ja machbar. Zur Weiterverwendung in OO-Basic ist dies ja nicht nötig. Der Windows-Test war schon erfolgreich.Stephan hat geschrieben:Alle Pfade, welche unter Extras>Optionen>openOffice.org>Pfade eingetragen sind lassen sich unter Verwendung des Services com.sun.star.util.PathSettings abfragen oder setzen. Diese Abfrage ist unabhängig vom Betriebssystem, allerdings müssen die Pfade gegebenenfalls umgewandelt werden, da die Rückgabe in der spezifischen URL-Notation von Openoffice erfolgt. Hier ist ein Beispiel für "home" oder "Eigene Dateien":
Code: Alles auswählen
Sub home Path=createunoservice("com.sun.star.util.PathSettings") msgbox path.work End Sub
Ciao
Niels