Betriebssystemunabhängiger Speicherpfad

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

Moderator: Moderatoren

Niels
*****
Beiträge: 212
Registriert: Mi, 16.06.2004 06:46
Wohnort: Heikendorf

Betriebssystemunabhängiger Speicherpfad

Beitrag von Niels »

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
Stephan
********
Beiträge: 12369
Registriert: Mi, 30.06.2004 19:36
Wohnort: nahe Berlin

Beitrag von Stephan »

Wie wäre es mit dem OO-Programmpfad?
Das hier sollte funktionieren:

Code: Alles auswählen

Sub OO_programmpfad 
oSettings = createUnoService("com.sun.star.frame.Settings") 
oPathSettings = oSettings.getByName("PathSettings") 
msgbox oPathSettings.ProgPath 
End Sub 
Gruß
Stephan
Toxitom
********
Beiträge: 3768
Registriert: Di, 12.08.2003 18:07
Wohnort: Wiesbaden
Kontaktdaten:

Beitrag von Toxitom »

hey,

Klar kann man die Umgebungsvariablen auslesen:

Code: Alles auswählen

Sub Main
msgbox environ("path")
msgbox environ("home")
msgbox environ("temp")
End Sub
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
Unterstützer LibreOffice, zertifizierter Trainer und Berater
Bücher: LibreOffice 6- Einstieg und Umstieg
Makros Grundlagen - LibreOffice / OpenOffice Basic
Niels
*****
Beiträge: 212
Registriert: Mi, 16.06.2004 06:46
Wohnort: Heikendorf

Home hört sich gut an

Beitrag von Niels »

Für Home muss es doch auch etwas unter Windows geben um den Ordner "Eigene Dateien" zu ermitteln. Das wäre ja schick:

Code: Alles auswählen

If environ("home") = "" then
   MeinPfad = environ("WindowsHome")
else
    MeinPfad = environ("home")
end if
Würde das auch unter OS2 laufen, oder müsste ich da extra auf eine andere Umgebungsvariable abfragen?

Danke
Niels
Niels
*****
Beiträge: 212
Registriert: Mi, 16.06.2004 06:46
Wohnort: Heikendorf

Beitrag von Niels »

Stephan hat geschrieben:
Wie wäre es mit dem OO-Programmpfad?
Das hier sollte funktionieren:

Code: Alles auswählen

Sub OO_programmpfad 
oSettings = createUnoService("com.sun.star.frame.Settings") 
oPathSettings = oSettings.getByName("PathSettings") 
msgbox oPathSettings.ProgPath 
End Sub 
Gruß
Stephan
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.

Gruß
Niels
Stephan
********
Beiträge: 12369
Registriert: Mi, 30.06.2004 19:36
Wohnort: nahe Berlin

Beitrag von Stephan »

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

Gruß
Stephan
Niels
*****
Beiträge: 212
Registriert: Mi, 16.06.2004 06:46
Wohnort: Heikendorf

Beitrag von Niels »

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
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.

Ciao
Niels
Antworten