Einzelnen Beitrag anzeigen

Benutzerbild von Ultimator
Ultimator

Registriert seit: 17. Feb 2004
Ort: Coburg
1.860 Beiträge
 
FreePascal / Lazarus
 
#6

Re: IPropertyStorage und Properties auslesen

  Alt 19. Okt 2005, 17:45
So, neue Erkenntnis

Ich hab jetzt auf einer koreanischen Seite etwas gefunden, das mir arg nach den aussieht, was ich haben will.
Dummerweise eben mit tausenden nicht darstellbaren Zeichen, die dann als Kästchen enden
Aber das ist nur der erklärende Text zum Code, den ich dort gefunden hab. Den hab ich versucht, nach Delphi zu portierern.
Wenn ihr wollt, kann ich die URL auch mal angeben.
Leider klappt das noch nicht so ganz. Hier mein aktueller Code und drunter die Erklärung *g*
Delphi-Quellcode:
  aJDMaster.GetJolietProperties(pPropStg);
    setlength(propspec, 1);
    setlength(propvar, 1);
    ppropstg.Enum(penumprop);

while (penumProp.Next(1, sps, @fetched) = S_OK) do
 begin
  ZeroMemory(@PropVar[0], sizeof(TPropVariant));
  propspec[0].ulKind := PRSPEC_PROPID;
  propspec[0].propid := sps.propid;

  pPropStg.ReadMultiple(1, @propspec[0], @propvar[0]);
 if (sps.lpwstrName = 'VolumeName') then
  begin
   if Assigned(propvar[0].bstrVal) then
    ShowMessage(propvar[0].bstrVal);
   if Assigned(propvar[0].pszval) then
    ShowMessage(propvar[0].pszval);
   if Assigned(propvar[0].pwszval) then
    ShowMessage(propvar[0].pwszval);
  end;
 end;
aJDMaster ist vom Typ IJolietDiscMaster, tut hier aber nichts zur Sache.
propspec ist ein Array [0..1] (hab ich testhalber so dimensioniert) of TPropSpec.
propvar ist ein Array [0..1] (gleicher Grund wie oben) of TPropVar.
pPropStg ist vom Typ IPropertyStorage.
penumprop ist vom Typ IEnumSTATPROPSTG.
Und sps ist vom Typ STATPROPSTG.

Code dürfte eigentlich soweit klar sein (wenn sich jemand damit auskennt ).
Erst lasse ich mir per pPropStg.Enum nen Enumerator geben.
Dann durchlaufe ich eine Schleife, in der ich alle Properties im PropertySet (so nenn ich das mal *g*) durchlaufe und dabei rufe ich pPropStg.ReadMultiple auf, um mir ggf. den Wert der Property VolumeName anzeigen zu lassen.
(Okay, die 3 verschiedenen ShowMessages hab ich nur drin, weil ich nicht weiß, in welchem der Wert evtl. steht xD)

Also bin ich zusammenfassend schon so weit, mitzubekommen, wenn die Property VolumeName gefunden enumeriert wird.

Aber hilfebedürftig bin ich trotzdem noch
Julian J. Pracht
  Mit Zitat antworten Zitat