Wie kann ich einen Dateipfad ermitteln??

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

Moderator: Moderatoren

Stephan
********
Beiträge: 12368
Registriert: Mi, 30.06.2004 19:36
Wohnort: nahe Berlin

Re: Wie kann ich einen Dateipfad ermitteln??

Beitrag von Stephan »

ich hatte dieses Problem schon vor Jahren noch unter OOo 2.02 so.
Unsere Lösung damals war folgende
Respekt - prima Lösung, funktioniert tadellos.



Gruß
Stephan
der.milco
***
Beiträge: 51
Registriert: Mo, 07.11.2005 16:44

Re: Wie kann ich einen Dateipfad ermitteln??

Beitrag von der.milco »

hawkhunter2002 hat geschrieben:Versuchs einfach mal
Habe ich. Und...

es funktioniert!!! SUPI. :D
Thx to hawkhunter2002
Benutzeravatar
komma4
********
Beiträge: 5332
Registriert: Mi, 03.05.2006 23:29
Wohnort: Chon Buri Thailand Asia
Kontaktdaten:

Re: Wie kann ich einen Dateipfad ermitteln??

Beitrag von komma4 »

Achtung:
Der Service DocumentInfo ist seit der Version 3 deprecated, d.h. der Code muss nicht mehr funktionieren: http://api.openoffice.org/docs/common/r ... tInfo.html
Cheers
Winfried
aktuell: LO 5.3.5.2 30m0(Build:2) SUSE rpm, unter Linux openSuSE Leap 42.3 x86_64/KDE5
DateTime2 Einfügen von Datum/Zeit/Zeitstempel (als OOo Extension)
der.milco
***
Beiträge: 51
Registriert: Mo, 07.11.2005 16:44

Re: Wie kann ich einen Dateipfad ermitteln??

Beitrag von der.milco »

Schön und gut; der dort beschriebene Ersatz DocumentProperties funktioniert allerdings nicht!!
Er führt zur Fehlermeldung: "Methode oder Eigenschaft nicht gefunden"

Ich bleibe bei DocumentInfo.
Benutzeravatar
komma4
********
Beiträge: 5332
Registriert: Mi, 03.05.2006 23:29
Wohnort: Chon Buri Thailand Asia
Kontaktdaten:

Re: Wie kann ich einen Dateipfad ermitteln??

Beitrag von komma4 »

der.milco hat geschrieben:Er führt zur Fehlermeldung: "Methode oder Eigenschaft nicht gefunden"
Das hat damit zu tun, das die Eigenschaft TemplateFileName ab Version 3 nun TemplateURL heisst:
http://api.openoffice.org/docs/common/r ... rties.html
Cheers
Winfried
aktuell: LO 5.3.5.2 30m0(Build:2) SUSE rpm, unter Linux openSuSE Leap 42.3 x86_64/KDE5
DateTime2 Einfügen von Datum/Zeit/Zeitstempel (als OOo Extension)
hawkhunter2002
**
Beiträge: 32
Registriert: So, 25.02.2007 09:11
Wohnort: Ingolstadt

Re: Wie kann ich einen Dateipfad ermitteln??

Beitrag von hawkhunter2002 »

komma4 hat geschrieben:Achtung:
Der Service DocumentInfo ist seit der Version 3 deprecated, d.h. der Code muss nicht mehr funktionieren: http://api.openoffice.org/docs/common/r ... tInfo.html
Danke für die Info :oops: hatte ich leider noch nicht bemerkt.
Hier nochmal der Code mit den neuen Erkenntnissen.

Code: Alles auswählen

Sub Main
 msgbox Urlpfad()
End Sub

'Funktion um den Pfad zur OrginalVorlage zu erhalten
Function getLoadedUrl(document As Object) As String
	DIM result as String
	DIM Args as Any
	DIM i as Integer
	
	result = ""
	args = document.Args
	For i = LBound(args()) To UBound(args())
		If args(i).Name = "URL" Then
			result = args(i).Value
			Exit For
		End If
	Next i
	getLoadedUrl() = result
End Function


Function Urlpfad()
	dim url as any
	
	url = ThisComponent.getDocumentProperties().TemplateURL ' Dateiname mit Pfad der zuständigen Vorlage

	If url = ""  Then
		url = getLoadedUrl(ThisComponent)
	
		If url = "" Then
			MsgBox "Warnung! Kein Pfad zur Vorlage/Dokumentherkunft bekannt!"		
			url = ThisComponent.URL
			If url = "" Then
				MsgBox "Shit happens..."
				Exit Function
			End If
		End If
	End If
	UrlPfad = url
End Function
Wer sich den Code genauer angesehen hat, wird aber wohl eh erkannt haben, dass weder in der alten Eigenschaft "TemplateFileName" noch in der neuen "TemplateURL" der Pfad zur Vorlage steht (Also bei mir sind diese Eigenschaften meisten Strings der Länge Null). Wenn dies der Fall ist werden die Args()-in der Function "getLoadedUrl"- des Documents abgefragt, in der Hoffnung, dass hier etwas brauchbares steht. (War bei mir in der Regel so).

Gruß

Hawk
OOO Basic Programmierers best Friend XRay-Tool
Stephan
********
Beiträge: 12368
Registriert: Mi, 30.06.2004 19:36
Wohnort: nahe Berlin

Re: Wie kann ich einen Dateipfad ermitteln??

Beitrag von Stephan »

Wer sich den Code genauer angesehen hat, wird aber wohl eh erkannt haben, dass weder in der alten Eigenschaft "TemplateFileName" noch in der neuen "TemplateURL" der Pfad zur Vorlage steht (Also bei mir sind diese Eigenschaften meisten Strings der Länge Null). Wenn dies der Fall ist werden die Args()-in der Function "getLoadedUrl"- des Documents abgefragt, in der Hoffnung, dass hier etwas brauchbares steht. (War bei mir in der Regel so).
Ja, zumindest bei mir ist das in diesem Sinne angekommen, denn natürlich wäre es mir kein:
Respekt - prima Lösung [...]
wert gewesen, wenn Du einen Code veröffentlicht hättest der die URL eines template ermittelt die (weil das template in die Vorlagenverwaltung integriert ist) aus dem Dokument gelesen werden kann.

Der Kern weshalb ich mich lobend äußerte war also:

Code: Alles auswählen

args = document.Args
   For i = LBound(args()) To UBound(args())
      If args(i).Name = "URL" Then
         result = args(i).Value
         Exit For
      End If
   Next i


Deswegen hat Winfried nun mit seinem Einwurf natürlich trotzdem recht (wie ich mich im Nachhinein überzeugt habe), nur war das nicht im Mittelpunkt meines Interesses (wenn man so sagen darf).
Ich bitte also ggf. die Verwirrung zu entschuldigen die ich (der ich routiniert mit StarBasic umgehe) u.U. dadurch verursacht habe das ich mich über ein Code-Konstrukt lobend geäußert habe, welches eine interessante (nicht allgemein bekannte) Teillösung enthielt und dabei nicht hinreichend berücksichtigte das andere Code-Teile ggf. OOo-versionsabhängig nicht funktionieren. Letzteres geschah nur weil diese Codeteile (für mich) üblich und deshalb ohne besonderes Interesse sind.




Gruß
Stephan
Antworten