FilePicker-/Folderpicker-Bug, div. Vers. und OS
Verfasst: 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:
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
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:
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
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)
Eine Alternative wäre die Änderung der ersten Zeile in
Code: Alles auswählen
MyDialog=createunoservice("com.sun.star.ui.dialogs.OfficeFilePicker")
Code: Alles auswählen
if MyDialog.execute = 0 then exit sub
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
