Einzelnen Beitrag anzeigen

MathiasSimmack
(Gast)

n/a Beiträge
 
#12

Re: Erweiterte Dateiinformationen schreiben

  Alt 28. Apr 2004, 10:16
So, noch ein Nachtrag meinerseits:

Zitat von MathiasSimmack:
Dabei ist mir aufgefallen, dass die Funktion nichts anzeigt, wenn man die gewünschte Eigenschaft vorher mit Bordmitteln (sprich: Rechtsklick auf die Datei -> Eigenschaften -> Dateiinfos) setzt.
Mittlerweile weiß ich auch warum. Windows legt diese Einträge nicht als WideString sondern nur als String ab. Ändere ich die Funktion "GetFileSummaryInfo" entsprechend um, sehe ich das auch.

Zitat von Luckie:
In mehrer Felder schreiben geht nicht, entweder du schreibst sie dir selber um, dass sie es kann oder rufst sie entsprechend oft nacheinander auf.
Das klappt ja im Original wg. "Create" nicht, aber ich war mal so frei, eine zusätzliche Funktion "SetMultipleFileSummaryInfo" zu schreiben, die sich wie folgt aufrufen lässt:
Delphi-Quellcode:
procedure TForm1.Button1Click(Sender: TObject);
var
  mal : TMultipleArrayList;
begin
  SetLength(mal,3);
  mal[0].pidInfoType := PIDSI_AUTHOR;
  mal[0].pidInfoStr := 'Ich';
  mal[1].pidInfoType := PIDSI_COMMENTS;
  mal[1].pidInfoStr := 'Tralala';
  mal[2].pidInfoType := PIDSI_TITLE;
  mal[2].pidInfoStr := 'Mein Titel';

  SetMultipleFileSummaryInfo('MeineDatei.txt',
    FMTID_SummaryInformation,
    mal);

  SetLength(mal,0);
end;
Die bearbeitete Unit (storage.pas) hänge ich ran, damit ihr das testen könnt. Die Grundlage ist zwar von Luckie, aber die Bezeichner für die Konstanten usw. stammen jetzt aus dem PSDK; aus der Datei "PropIdl.h" um genau zu sein)

Zitat von schitho:
Außerdem hab ich keine Möglichkeit gefunden, wie ich das Feld Revisionsnummer und Quelle mit Daten füllen kann.
Erstere ist PIDSI_REVNUMBER und lässt sich recht einfach setzen
Delphi-Quellcode:
  SetFileSummaryInfo('MeineDatei.txt',
    FMTID_SummaryInformation,
    PIDSI_REVNUMBER,
    '3.0');
Dagegen gehört die Quelle (PIDMSI_SOURCE) zur Kategorie FMTID_MediaFileSummaryInformation, und die GUID war nicht einfach zu finden. *schwitz* Aber ich habe sie ja doch entdeckt (s. Unit im Anhang). Und hier das Beispiel
Delphi-Quellcode:
  SetFileSummaryInfo('MeineDatei.txt',
    FMTID_MediaFileSummaryInformation,
    PIDMSI_SOURCE,
    'www.delphipraxis.net');
btw: Die Funktionen sind bisher nur darauf ausgelegt, Strings zu lesen und zu schreiben. Einige der Konstanten besitzen aber ein anderes Format. In der Unit steht es dahinter (steht nichts da, hat die Konstanten den gleichen Typ wie die in der Zeile zuvor, usw.). Ihr müsstet die Funktionen also umschreiben um solche Werte auslesen zu können. Ich wollt´s nur gesagt haben.
Angehängte Dateien
Dateityp: pas storage.pas (9,9 KB, 60x aufgerufen)
  Mit Zitat antworten Zitat