Byte Array als Objekt einfügen

05/05/2009 - 09:40 von Lorenz Ingold | Report spam
Es gibt eine Methode
myOLEContainerControl.CreateEmbed Fileangabe
Diese verlangt als Parameter ein File, das im Filesystem irgendwo
gespeichert ist. Wir bekommen nun aus einer Fremdkomponente einen Byte Array
(im Memory), das ein File darstellt. Gibt es eine Möglichkeit, dass
CreateEmbed (oder irgendeine analoge Methode) statt eines Files auch einen
Byte Array annimmt? Sonst haben wir die ziemlich unglückliche Situation,
dass wir den Byte Array zuerst als temporàres File abspeichern müssen, damit
CreateEmbed in Aktion treten kann, und danach löschen wir das temp. File
wieder. Das sieht nach einem ziemlich sinnlosen und "performance-killenden"
Umweg aus, wo man meinen müsste, da sollte es doch eine bessere Lösung
geben. Weiss da jemand etwas?
 

Lesen sie die antworten

#1 Nico Notter
07/05/2009 - 15:41 | Warnen spam
ByteArrays eignen sich hervorragend als memory mapped files,
d.h. man assoziiert dem Array einen Filename und Windows
lagert das Array bei Bedarf als Diskfile nach eigenem Gusto
auf die Platte aus. Ob das allerdings *merklich* effizienter
ist als ein *ein*maliges "OpenFile - Put Buffer - CloseFile"
halte ich für fraglich, da letztlich nur das File I/O für
memory mapped files priorisiert ist und statt eines
OpenFile/CloseFile das entsprechende Pendant durchlaufen
wird.

Im übrigen, solange es kein Performanceproblem gibt, wàre
mir ein 'umstàndlicher', aber klar lesbarer Code immer noch
lieber als ein raffinierter, bei dem nach vier Wochen
niemand mehr was von den genauen Tricks, Defaults und
sonstigen Randbedingungen weiß.

Ähnliche fragen