Entwickler-Ecke
Sonstiges (Delphi) - Typkonflikt bei OpenOffice
Peter18 - Di 25.10.11 13:05
Titel: Typkonflikt bei OpenOffice
Ein freundliches Hallo an alle,
es ist doch immer wieder erfrischend eine Fehlermeldung zu lesen die einem alles sagt und die Lösung mitliefert. So geschehen am heutigen Tag, beim Versuch ein Word-Dokument bei OpenOffice einzufügen.
Fehlermeldung: "
Typkonflikt"
Lösung: :?:
Nach diversen Versuchen stehe ich hier, ich Tor und weiß so viel als wie zuvor! (geklaut)
Delphi-Quelltext
1: 2: 3: 4: 5: 6: 7: 8: 9: 10: 11: 12: 13: 14: 15: 16: 17: 18: 19: 20: 21: 22: 23: 24:
| procedure OOInsertDoc( OO: T_OO; Fil: String; Err: T_Error ); var Par : OLEVariant; begin if LowerCase( GetExt(Fil) ) = '.doc' then begin Par := VarArrayCreate([0, 1], varVariant); Par[0] := OO.OpenOffice.Bridge_GetStruct('com.sun.star.beans.PropertyValue'); Par[1] := OO.OpenOffice.Bridge_GetStruct('com.sun.star.beans.PropertyValue'); Par[0].Name := 'Name'; Par[0].Value := OO.FCP.getFileURLFromSystemPath('', Fil); Par[1].Name := 'Filter'; Par[1].Value := 'MS Word 97'; OO.Disp.executeDispatch( OO.Fil, '.uno:InsertDoc', '', 0, Par ); end else begin Par := VarArrayCreate([0, 0], varVariant); Par[0] := OO.OpenOffice.Bridge_GetStruct('com.sun.star.beans.PropertyValue'); Par[0].Name := 'Name'; Par[0].Value := OO.FCP.getFileURLFromSystemPath('', Fil); OO.Disp.executeDispatch( OO.Fil, '.uno:InsertDoc', '', 0, Par ); end; end; |
Das ist die Testroutine. Der Fehler tritt bei "executeDispatch" im ersten Teil auf, da die eingezogene Datei ein Word-Dokument ist. Die Parameter habe ich aus einem aufgezeichneten OO-Makro entnommen. Ich hoffe jemand hat eine Idee!
Dank Euch im Voraus und Grüße von der nun sonnigen Nordsee.
Peter
Peter18 - Di 25.10.11 17:38
Hallo Martok,
danke für Deine Antwort! Genau nach einer solchen Funktion habe ich gesucht. Den Dispatcher wollte ich möglichst nicht verwenden. Wozu gehört denn die Methode? Zum Dokument? Da bekomme ich einen Fehler (... nicht unterstützt), oder Cursor? Auch da gibt es eine Fehlermeldung. Sind die Parameter so richtig oder habe ich da etwas falsch verstanden?
Delphi-Quelltext
1:
| OO.Cur.insertDocumentFromURL( OO.FCP.getFileURLFromSystemPath('', Fil), '', 0 ); |
Wenn es eine Beschreibung gibt, in der es anders heißt, kann man Basic warscheinlich nicht auf Delphi oder die API übertragen. Im Moment tu ich mich noch etwas schwer, die Sachen zu finden, z.B. den MediaDescriptor oder die Hirarchie bei "insertDocumentFromURL". Hast Du einen Tipp?
Die andere Hälfte ist noch nicht getestet.
Grüße
Peter
Peter18 - Mi 26.10.11 16:18
Hallo Martok,
danke für deine Antwort. Sie hat weitergeholfen. Mit OO-Dokumenten geht es schon, aber mit MS-Docs noch nicht. Da habe ich noch Probleme mit dem Import. Es erscheint kein Text, ich nehme daher an, ich muß den Importfilter und Optionen angeben. Doch bisher ist es mir nicht gelungen in der Dokumentation eine Liste mit gültigen Filternamen und Optionen zu finden. Der Filter "MS Word 97" hat zwar keinen Fehler produziert, aber es erschien auch damit kein Text. Irgend etwas fehlt da noch, denn vor dem nicht vorhandenen Text wird auch noch ein Seitenumbruch gesetzt.
Grüße
Peter
Peter18 - Do 27.10.11 17:44
Ein freundliches Hallo an alle,
es war tatsächlich der Filter! :) Mit "
<Alle Formate>" kann ich ein Word-Dokument laden.
Delphi-Quelltext
1: 2: 3: 4: 5: 6: 7: 8: 9: 10: 11: 12: 13: 14: 15: 16: 17: 18: 19: 20: 21:
| procedure OOInsertDoc( OO: T_OO; Fil: String; Err: T_Error ); var Par : OLEVariant; Path : String;
begin if LowerCase( GetExt(Fil) ) = '.doc' then begin Par := VarArrayCreate([0, 0], varVariant); Par[0] := OO.OpenOffice.Bridge_GetStruct('com.sun.star.beans.PropertyValue'); Par[0].Name := 'FilterName'; Par[0].Value := '<Alle Formate>'; Path := OO.FCP.getFileURLFromSystemPath('', Fil); OO.Cur.insertDocumentFromURL( Path, Par ); end; if LowerCase( GetExt(Fil) ) = '.odt' then begin Path := OO.FCP.getFileURLFromSystemPath('', Fil); OO.Cur.insertDocumentFromURL( Path, VarArrayCreate([0, - 1], varVariant) ); end; end; |
Das Dumme ist nur es wird ein Seitenumbruch vorangestellt. :(
Grüße von der Nordsee
Peter
Entwickler-Ecke.de based on phpBB
Copyright 2002 - 2011 by Tino Teuber, Copyright 2011 - 2026 by Christian Stelzmann Alle Rechte vorbehalten.
Alle Beiträge stammen von dritten Personen und dürfen geltendes Recht nicht verletzen.
Entwickler-Ecke und die zugehörigen Webseiten distanzieren sich ausdrücklich von Fremdinhalten jeglicher Art!