![]() |
Storage Streams
Hi :nerd:,
hoffentlich kann mir jemand von Euch ja auf die Sprünge helfen. Folgender Code-Abschnitt:
Delphi-Quellcode:
macht mir Probleme. Ich komme nicht über die rot-markierte Zeile hinaus. Die Idee stammt aus dem Buch Delphi COM Programming von Eric Harmon.
const
cStagingLiveVersion: LongInt = $03000100; FMTID_SummaryInformation: TGUID = '{F29F85E0-4FF9-1068-AB91-08002B27B3D9}'; type TPropSpecArray = array of TPropSpec; PPropSpecArray = ^TPropSpecArray; TPropVariantArray = array of TPropVariant; PPropVariantArray = ^TPropVariantArray; var Package: IStorage; OS: TOleStream; Stm: IStream; Writer: TWriter; PSS: IPropertySetStorage; PS: IPropertyStorage; PSA: TPropSpecArray; PVA: TPropVariantArray; begin if not SUCCEEDED(StgOpenStorage(PWideChar(GetPackageName), nil, STGM_READWRITE or STGM_SHARE_EXCLUSIVE, nil, 0, Package)) then OleCheck(StgCreateDocFile(PWideChar(GetPackageName), STGM_CREATE or STGM_READWRITE or STGM_SHARE_EXCLUSIVE, 0, Package)); PSS := Package as IPropertySetStorage; [color=#f60000]OleCheck(PSS.Open(FMTID_SummaryInformation, STGM_WRITE or STGM_SHARE_EXCLUSIVE, PS));[/color] SetLength(PSA, 1); SetLength(PVA, 1); try PSA[0].ulKind := PRSPEC_PROPID; PSA[0].propID := PIDSI_TITLE; PVA[0].vt := VT_LPSTR; PVA[0].pszVal := 'Content Ace v3 - Staging Package Item'; OleCheck(PS.WriteMultiple(1, @PSA[0], @PVA[0], 2)); finally SetLength(PSA, 0); SetLength(PVA, 0); end; Wer hat eine Idee :?: ...:cat:... P.S. Eine vernünftige Fehlermeldung kann ich nicht liefern, da COM mir sagt, ich soll mich an meinen Systemadministrator wenden ... :( Aber ich weiss es auch nicht. ;) |
Moin sakura,
wo ist GetPackageName deklariert? Das kann ich irgendwie nicht so recht finden. |
:oops:
Lokale Procedure, welche lediglich den Dateinamen für das Package zurückliefert. z.B.: 'C:\Temp\Package.dat' |
Moin sakura,
bei mir meckert er immer: STG_E_FILENOTFOUND (80030002) (an der gleichen Stelle) Welche Art Package meinst Du? |
Mit Package meine ich diese Storage Streams - in diesen Dateien kann man wunderbar verschiedene Elemente getrennt voneinander speichern. Intern sind diese "ähnlich" einem eigenem Dateisystem. Word benutzt auch dieses Format zum Speichern von Dokumenten.
|
Ich habe jetzt sichergestellt, dass die gewünschte Datei existiert - aber der gleiche Fehler kommt noch immer. :(
|
Alle Zeitangaben in WEZ +1. Es ist jetzt 03:57 Uhr. |
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024-2025 by Thomas Breitkreuz