Seite 1 von 1

[gelöst] Office "Tools" Library funktioniert nicht (richtig)

Verfasst: Do 14. Jun 2012, 21:15
von harald235
Hallo liebe Helfende,

meine Adress-Datenbank funktioniert unter openSUSE und Windows 7 eigentlich einwandfrei.

Eigentlich bedeutet:
Für ein Makro brauche ich aus der LibreOffice "Tools" Bibliothek die Function "GetFileNameWithoutExtension", um einen Dateinamen ohne .odb-Erweiterung aus einer Pfadangabe zu extrahieren. Das verwende ich für die automatische Anmeldung der DB.

Der Aufruf:

Code: Alles auswählen

' die Bibliothek "Tools" laden, falls noch nicht geschehen 
' wird gebraucht für "GetFileNameWithoutExtension"
	If not globalScope.BasicLibraries.isLibraryLoaded("Tools") Then
		globalScope.BasicLibraries.loadLibrary("Tools")
	End If

' den Datenbanknamen ohne .odb aus der Pfadangabe auslesen
	sDBName = Tools.Strings.GetFileNameWithoutExtension(thisDatabaseDocument.url, getPathSeparator)
In openSUSE funktioniert das einwandfrei, in Windows 7 nicht. Von beiden Betriebssystemen wird dieselbe Datenbank angesprochen, sie liegt auf einer von beiden Systemen nutzbaren Partition.

Das Problem:
Windows extrahiert nicht den Dateinamen aus dem Pfad, sondern behält den ganzen Pfad bei. Eine Fehlermeldung kommt nicht. Testweise habe ich getPathSeparator weggelassen, dasselbe Ergebnis.

Wenn ich einen Fehler provoziere, indem ich aus "Tools" die Function in mein Makro kopiere, meckert mich Base an, das diese Function anderweitig definiert ist und in der IDE erscheint aus der Bibliothek "Tools" der Code von Function "GetFileNameWithoutExtension". Das versteh' ich nicht.

Die Umgebungsbedingungen:
openSUSE 12.1
LibreOffice Base 3.5.4.2
eingebettete HSQLDB 1.8
Windows 7
auf beiden Systemen Java JRE 1.6.0.21

Hat einer eine Idee wie ich die Function zum Laufen kriege?

Gruß harald

Re: LibreOffice "Tools" Library funktioniert nicht (richtig)

Verfasst: Fr 15. Jun 2012, 00:35
von harald235
Hab's gerade selbst rausgefunden:

in Windows funktioniert "getPathSeparator" nicht wie er soll (bei mir):

Code: Alles auswählen

GetFileNameWithoutExtension(thisDatabaseDocument.url, getPathSeparator)
Stattdessen gebe ich einen Separator direkt ein:

Code: Alles auswählen

sDBName = Tools.Strings.GetFileNameWithoutExtension(thisDatabaseDocument.url, "/")
Also nicht der Windows-typische Path-Separator "\" (backslash), sondern tatsächlich "/" (slash).

Dann funktionierts auch in Windows 7

Gruß harald

Re: [gelöst] Office "Tools" Library funktioniert nicht (rich

Verfasst: Fr 15. Jun 2012, 15:16
von harald235
manchmal braucht's etwas länger bis ich das Offensichtliche wahrnehme:

Ich habe als Parameter "thisDatabaseDocument.url" übergeben. Und erwartet, das Windows seinen üblichen PathSeparator, den backslash (\) benutzt.
Nur: In URL's ist der Separator richtigerweise ein oder mehrere slash's (/). Egal ob das Betriebssystem Linux, Windows oder Mac ist.

Fühle mich gerade ein bißchen doof.

Gruß harald