🙏 Helfen Sie jetzt mit, unser LibreOffice Forum zu erhalten! 🙏
Mit Ihrer Spende sichern Sie den Fortbestand, den Ausbau und die laufenden Kosten dieses Forums. 🌱

🍀 Jeder Beitrag zählt – vielen Dank für Ihre Unterstützung!🍀

❤️ DANKE >> << DANKE ❤️

>> Dank Ihrer Unterstützung -> Keine Werbung für alle registrierten LibreOffice-Forum User! <<
🤗 Als Dankeschön werden Sie im Forum als LO-SUPPORTER gekennzeichnet. 🤗

FilePicker-/Folderpicker-Bug, div. Vers. und OS

Alles zur Programmierung im LibreOffice.
Antworten
Ralf.H
Beiträge: 9
Registriert: Sa 15. Okt 2011, 13:46

FilePicker-/Folderpicker-Bug, div. Vers. und OS

Beitrag von Ralf.H » Do 23. Mai 2013, 19:57

Hallo allerseits,

ich habe vor etlichen Jahren als eines meiner ersten Projekte einen Dienstplaner -noch unter OpenOffice 2.x auf der Basis von Calc entwickelt und nach und nach weitere Funktionen hinzugefügt.
Unter anderen habe ich den Import von Nutzer- und Feriendaten aus anderen Calc-Dateien realisiert. Dabei ist mir -nach längerer Entwicklungspause- u.a. ein Fehler untergekommen, wenn ich den Datei-Öffnen-Dialog abbreche oder einfach nur das Fenster schließe:
Unter Linux/LO 3.6 (BuildID:360m1(Build:304)) stürzt das „Programm“ dann einfach ab, d.h. LO beendet sich kommentarlos dafür aber schmerzhaft. Eine Fehlersuche unter Windows8/LO 3.6.4.3 (Build ID 2ef5aff) brachte immerhin einen ersten Hinweis: „unzulässiger Wert … außerhalb des definierten Bereichs“.

Hier der alte Code:

Code: Alles auswählen

	MyDialog=createunoservice("com.sun.star.ui.dialogs.FilePicker")
	MyDialog.execute
	FileName=MyDialog.Files(0)
Das Problem lag also darin, dass bei einem Abbruch des Dialogs MyDialogFiles(0) nicht zugewiesen, somit leer und nicht etwa NULL ist. Bei der Zuweisung diesen leeren Wertes zu einer Variablen führt dann zu den o.a. Fehlermeldungen.
Eine Alternative wäre die Änderung der ersten Zeile in

Code: Alles auswählen

	MyDialog=createunoservice("com.sun.star.ui.dialogs.OfficeFilePicker")
Diesen mir bislang unbekannten Service habe ich bei Krumbein (schon 2. Auflage aus 2008) gefunden. Leider sieht der LO-eigene Dateidialog nicht so schön aus, so dass ich Vermeidungsstrategien für den o.a. Fehler gesucht und gefunden habe. Die zweite Zeile sieht nun so aus:

Code: Alles auswählen

	if MyDialog.execute = 0 then exit sub
Wenn der Rückgabewert von .execute = 0 ist, wurde keine Datei ausgewählt und die Prozedur bricht ab.

Nun läuft's sowohl unter den o.a. Versionskombis.
Ich hoffe, das ist die Lösung und sie hilft dem einen oder anderen weiter …

Auf meinem Arbeitsrechner läuft noch die Kombi Linux/LO 3.5.4.2
Da habe ich ein weiteres Problem bei dem ursprünglichen Aufruf des Dateiauswahldialogs – der wird komplett ignoriert, d.h. die Prozedur bricht offenbar ab und nichts passiert. Da kann ich aber erst morgen weiter testen.
Aber vielleicht hat ja schon jemand eine Idee?

Update:
Auf meinem Arbeitsrechner läuft's nach der Änderung auch!
Ist ja schon merkwürdig, wie unterschiedlich die verschiedenen Versions-/und OS-Kombinationen auf Fehler reagieren ;-)


An alle, die das LibreOffice-Forum gern nutzen und unterstützen wollen:


Bitte helfen Sie uns mit 7 Euro pro Monat.
Durch Ihren Beitrag tragen Sie dazu bei, unsere laufenden Kosten für die kommenden Monate zu decken.
Unkompliziert per Kreditkarte oder PayPal.
Als ein kleines Dankeschön werden Sie im LO-Forum als SUPPORTER gekennzeichnet.



Antworten