Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Win32/Win64 API (native code) (https://www.delphipraxis.net/17-win32-win64-api-native-code/)
-   -   Delphi insertDocumentFromURL und OpenOffce (https://www.delphipraxis.net/51265-insertdocumentfromurl-und-openoffce.html)

spacewolf 9. Aug 2005 13:53


insertDocumentFromURL und OpenOffce
 
Hi,

seit Wochen versuche ich eine RTF in ein OpenOffice einzufügen. :cry:
Das heißt in einem bestehenden Dokument eine RTF Datei an eine bestimmte Stelle,
per "StarBasic" einzufügen. Alle Lösungen die gefunden habe, sind in anderen Programmiersprachen verfasst.
Irgendwie komme ich über die letzte Hürde nicht hinweg.

Ich erzeuge den Textcursor:

Delphi-Quellcode:
tc := Document.Text.createTextCursorByRange(bm.Anchor);
Dann einen Poperty:

Delphi-Quellcode:
VariantArr   := VarArrayCreate([0, 0], varVariant);
VariantArr[0] := MakePropertyValue('FilterName','Rich Text Format');
Dann sollte das Dokument geladen werden:

Delphi-Quellcode:
tc.InsertDocumentFromUrl(rtfFile,VariantArr);
Geht aber nicht !!! Da passiert gar nix.
Das Dokument liegt aber wirklich an der Stelle !
Ich hab einen C-Source gefunden da werden einfach statt VariantArr 'ne Klammer übergeben: "()" (für leer :?: )

Code:
cursor.insertDocumentFromURL(fileUrl, ())
Ein Delphi-Source-Schnipsel den ich nicht verstehe lößt es folgendermaßen:

Delphi-Quellcode:
theTextCurser := Document.Text.CreateTextCursor;
theTextCurser.insertDocumentFromURL(ooFileName, VarArrayCreate([0, - 1], varVariant) );
Ich weiß aber nicht was hinter: VarArrayCreate([0, - 1], varVariant) steht.
Aber ich habs probiert und hat auch nix genützt.

Ein Makro meint das es folgendermaßen geht:
Code:
Dim Dummy as Object
oCursor.InsertDocumentFromUrl("agb.sxw",Dummy)
Ich dachte ein leeres Variant würde auch funktionieren, tut es aber auch nicht.
Wäre ja toll, dann müsste man das Format gar nicht erst angeben und Open Office könnte einfach "alles" (was es kennt) laden/importieren.

Weiß jemand Abhilfe ? Oder meinen "Hirn-Bug".

euer Andreas :nerd:

PS: die Funktion MakePropertyValue:

Delphi-Quellcode:
function TOLE_OpenOffice.MakePropertyValue(PropName, PropValue:string):variant;
var Struct: variant;
begin
    Struct := Service.Bridge_GetStruct('com.sun.star.beans.PropertyValue');
    Struct.Name := PropName;
    Struct.Value := PropValue;
    Result := Struct;
end;
PPS: auch wenn OpenOffice schwieriger anzucoden ist, ich steig um :stupid:

spacewolf 9. Aug 2005 14:04

Es geht ich werd IRRE !!!
 
Es geht... ich weiß zwar nicht warum aber es geht... !!! :hello: :spin2: :tongue:

:dp:

Also irgendwie gehts mit dem:

Delphi-Quellcode:
tc.InsertDocumentFromUrl(rtfFile,VarArrayCreate([0, - 1], varVariant) );
Kennt ihr den Unterschied zwischen Theorie und Praxis ?

Theorie ist, man weiß wie es funktionieren müsste aber es funktioniert nicht.
Praxis ist, es funktioniert und man weiß nicht wieso.

Gotte Segne euch alle

euer Andreas

PS: irgendwann muss ich mal ne Ladung Bier ausgeben :cheers:


Alle Zeitangaben in WEZ +1. Es ist jetzt 15:42 Uhr.

Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz