Hallo,

ich habe in einem *.sxw einen zusätzlichen Ordner mit Dateien angelegt,
alles ist ordnungsgemäß in manifest.xml eingetragen. Die *.sxw-Datei
"funktioniert".

Gemäß des Beispiels:
http://codesnippets.services.openoffice.org/Writer/Writer.ExtractGfx.sni
p

lese ich die Dateien aus dem zusätzlichen Ordner aus und kopiere sie in
einen lokalen Ordner der Festplatte. Hierzu verwende ich folgenden Code:

Sub Extract_infixes()
On Local Error Goto ErrorHandler
Dim oDocument as Object
Dim oZipArchive as Object
Dim oDateien as Object
Dim mZipFile(0) as Variant
Dim mFiles() as String
Dim oFileAccess as Object
Dim oFile as Object
Dim oInputStream as Object
Dim oOutputStream as Object
Dim mData() as Variant
Dim sDestFolder as String
Dim inhalt as String
Dim n as Long
Dim f as Long
Dim j as Integer
oDocument = StarDesktop.getCurrentComponent
sDestfolder = "file:///D:/infixes/"
oZipArchive = createUnoService("com.sun.star.packages.Package")
mZipFile(0) = oDocument.URL
oZipArchive.initialize(mZipFile())
oDateien = oZipArchive.getByHierarchicalName("infixes")
mFiles() = oDateien.getElementNames
For j = 0 to uBound(mFiles())
        oFileAccess = createUnoService("com.sun.star.ucb.SimpleFileAccess")
        oFile = oFileAccess.openFileWrite(sDestFolder & mFiles(j))
        oOutputStream = createUnoService("com.sun.star.io.DataOutputStream")
        oOutputStream.setOutputStream(oFile)
        oInputStream = oDateien.getByName(mFiles(j)).getInputStream()
        n = -1
        f = 0
        While n <> 0
                '(**)
                n =     oInputStream.readBytes(mData(), 65536)
                oOutputStream.writeBytes(mData())
                '(*)
                f = f + 64
                msgbox f & "kB Daten gelesen."
        Wend
        oOutputStream.flush()
        oOutputStream.closeOutput()
        oInputStream.closeInput()
Next j
Exit Sub
ErrorHandler:
        MsgBox "Fehler aufgetreten"
End Sub

(Hinweis: der Code funktioniert)

Fragen:
Wie ermittle ich die Größe der zu kopierenden Dateien *vor* dem
eigentlichen Kopieren, damit ich bei (*) (siehe Code) eine
Fortschrittsanzeige ansteuern kann?
Wie ist die Zeile nach (**) zu bewerten? Sind 64 KB Blockgröße kritisch
oder ungeschickt, kann ich das Lesen/Schreiben irgendwie beschleunigen?


Gruß
Jörg



---------------------------------------------------------------------
To unsubscribe, e-mail: [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]

Antwort per Email an