Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Programmieren allgemein (https://www.delphipraxis.net/40-programmieren-allgemein/)
-   -   Lesen/Schreiben von Dateieigenschaften per DSOFile.dll (https://www.delphipraxis.net/184547-lesen-schreiben-von-dateieigenschaften-per-dsofile-dll.html)

norwegen60 4. Apr 2015 11:09

Lesen/Schreiben von Dateieigenschaften per DSOFile.dll
 
Hallo zusammen,

ich lese und beschreibe die Dateieigenschaften diverser Dokumente über die Microsoft-DLL DsoFile.dll. Das funktioniert auch super und mit allen möglichen Dateiformaten.
Das Blöde nur:
  • Ich kann die Eigenschaften auch in Formate wie jpg, txt, zip, ini, pdf ... schreiben und wieder auslesen.
  • Wenn ich aber z.B. die Eigenschaft "Titel" im Explorer anzeigen lasse, wird dort mein Eintrag nur bei doc, docx, xls, xlsx, msg, ... angezeigt, also den Office-Dokumenten
Hat jemand eine Lösung, wie ich die Eigenschaften so beschreibe, dass er auch bei den anderen Dateiformaten im Explorer angezeigt werden kann.

Eigentlich wäre meine Erwartungshaltung, dass es eine vom Dateiformat völlig unabhängige Art gibt um zumindest ein paar Grundinformationen zu hinterlegen, aber ich weiß, dass es leider unzählige Arten gibt. Vielleicht gibt es ja aber doch einen kleinsten gemeinsamen Nenner.

Danke und Grüße
Gerd

jaenicke 4. Apr 2015 11:23

AW: Lesen/Schreiben von Dateieigenschaften per DSOFile.dll
 
Wo sollten die Informationen denn z.B. in einer INI-Datei oder Textdatei z.B. landen?
Wenn das Dateiformat diese Informationen nicht speichern kann, können sie auch nicht darin gespeichert werden.

Es wäre ja auch blöd, wenn in der Datei z.B. am Anfang plötzlich noch solche Zusatzinformationen drin stünden...

Was möchtest du denn erreichen?

mkinzler 4. Apr 2015 12:02

AW: Lesen/Schreiben von Dateieigenschaften per DSOFile.dll
 
Es gibt auch andere Dateitypen, welche erweiterte Eigenschaften/Tags kennen (JPG, MP3, PDF...). Diese müsstest Du aber getrennt behandeln.

Dies für alle Typen zu implementieren wäre etwas komplexer, hierfür müsste man die Eigenschaften wo anders speichern (z.B. in ADS) und man würde auch eine Erweiterung des Explorers benötigen, welche diese auslist und entsprechend anzeigt.

Bernhard Geyer 4. Apr 2015 12:11

AW: Lesen/Schreiben von Dateieigenschaften per DSOFile.dll
 
Ich tippe mal darauf das hier MS wieder eine halbgare Lösung anbietet.
DsoFile.dll wird die Infos für Dateien die es nicht in der Datei speichern kann in einer eigenen DB speichern. Leider hat man vergessen diese DB auch dem Windows Explorer bekannt zu machen so das dieser nur aus den Dateiheadern von doc und Co. auslesen kann.


Aber wie schon gesagt:
Was möchtest du denn eigentlich erreichen? Welchen Nutzen erwartest du wenn du das machst?

mkinzler 4. Apr 2015 12:13

AW: Lesen/Schreiben von Dateieigenschaften per DSOFile.dll
 
Nein, es wird schon in die Datei geschrieben, die DSOFile gehört aber zu Office und kennt halt nur die Officeformate.

Bernhard Geyer 4. Apr 2015 13:18

AW: Lesen/Schreiben von Dateieigenschaften per DSOFile.dll
 
Zitat:

Zitat von mkinzler (Beitrag 1296138)
Nein, es wird schon in die Datei geschrieben, die DSOFile gehört aber zu Office und kennt halt nur die Officeformate.

Und wie geht dann das?
Zitat:

Ich kann die Eigenschaften auch in Formate wie jpg, txt, zip, ini, pdf ... schreiben und wieder auslesen.

jaenicke 4. Apr 2015 15:32

AW: Lesen/Schreiben von Dateieigenschaften per DSOFile.dll
 
Die DLL nutzt laut Dokumentation OLE, insofern gehen auch andere Dateien, sofern das über OLE damit funktioniert. Aufgelistet sind ja sowohl die Office-Dateien als auch "andere Dateien":
https://support.microsoft.com/en-us/...?wa=wsignin1.0

mkinzler 4. Apr 2015 15:37

AW: Lesen/Schreiben von Dateieigenschaften per DSOFile.dll
 
Zitat:

* Andere Dateien, ohne dass die dazugehörigen Office-Produkte installiert sind

Die Beispieldatei "Dsofile.dll" ist in Microsoft Visual C++ erstellt. Sie demonstriert, wie mithilfe der IPropertyStorage-OLE32-Schnittstelle auf die erweiterten Eigenschaften von OLE Structured Storage-Dateien zugegriffen wird.
Dazu müssten die Dateien aber auch das entsprechende Format verwenden.

https://en.wikipedia.org/wiki/COM_Structured_storage


Alle Zeitangaben in WEZ +1. Es ist jetzt 01:21 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