Einzelnen Beitrag anzeigen

Benutzerbild von Mazel
Mazel

Registriert seit: 11. Nov 2005
Ort: Leipzig
831 Beiträge
 
#5

Re: StringFileInfo/VarFileInfo für Dateiversion schreiben

  Alt 26. Mai 2009, 19:10
Guten Abend,

danke für diese schönen Tipps. Ich habe jetzt schonmal versucht etwas zu kreieren, bin aber bis jetzt noch zu keinem Erfolg gekommen und zum zeigen muss ich noch einiges zusammenfassen und weiter ausprobieren.
Es ist eben nicht einfach diese Struktur zusammen zubauen

Wenn ich dein Code als Grundlage nehme verarbeite ich am Ende den AnsiChar. Ich bräuchte ja aber den Pointer, damit ich diesen an Children weitergeben kann.

Btw.: ich hatte von Zacherl folgende Strukturen bekommen, die ich ein wenig aufgebessert habe, damit es funktioniert.
Delphi-Quellcode:
type
  TFIXEDFILEINFO = packed record
    dwSignature: DWord;
    dwStrucVersion: DWord;
    dwFileVersionMS: DWord;
    dwFileVersionLS: DWord;
    dwProductVersionMS: DWord;
    dwProductVersionLS: DWord;
    dwFileFlagsMask: DWord;
    dwFileFlags: DWord;
    dwFileOS: DWord;
    dwFileType: DWord;
    dwFileSubtype: DWord;
    dwFileDateMS: DWord;
    dwFileDateLS: DWord;
  end;

     TVERSIONSTRING = packed record
    wLength: Word;
    wValueLength: Word;
    wType: Word;
    {$IFDEF D12ORABOVE}
    szKey: String;
    {$ELSE}
    szKey: WideString;
    {$ENDIF}
    Padding: TWordArray;
    {$IFDEF D12ORABOVE}
    Value: String;
    {$ELSE}
    Value: WideString;
    {$ENDIF}
  end;

  TVERSIONSTRINGTABLE = packed record
    wLength: Word;
    wValueLength: Word;
    wType: Word;
    {$IFDEF D12ORABOVE}
    szKey: Array[0..8] of Char;
    {$ELSE}
    szKey: Array[0..8] of WideChar;
    {$ENDIF}
    Padding: TWordArray;
    Children: array of TVERSIONSTRING;
  end;
  TSTRINGFILEINFO = packed record
    wLength: Word;
    wValueLength: Word;
    wType: Word;
    {$IFDEF D12ORABOVE}
    szKey: Array[0..14] of Char;
    {$ELSE}
    szKey: Array[0..14] of WideChar;
    {$ENDIF}
    Padding: TWordArray;
    Children: Array of TVERSIONSTRINGTABLE;
  end;

  TVERSIONINFO = packed record
    wLength: Word;
    wValueLength: Word;
    wType: Word;
    szKey: Array[0..15] of WideChar;
    Padding1: Word;
    Value: TFIXEDFILEINFO;
    Padding2: Word;
    Children: Array of TSTRINGFILEINFO;
  end;
Anfangs gab es Probleme in der Reihenfolge, nachdem ich das geändert hatte konnte ich die VERSIONINFO schreiben, aber die children gehen bis heute noch nicht, da tu ich mich wohl etwas schwer.

Gruß
Mazel
Marcel Jänicke
www.mj-software.net
  Mit Zitat antworten Zitat