Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Win32/Win64 API (native code) (https://www.delphipraxis.net/17-win32-win64-api-native-code/)
-   -   Delphi Programm Version Info (https://www.delphipraxis.net/125328-programm-version-info.html)

Willie1 4. Dez 2008 09:29


Programm Version Info
 
Hallo Leute,
ich benutze folgende Funktion, um die Programm Version zu ermitteln. Bei einem Testprogramm klappt das auch, aber bei einem größerem Programm liefert es "Die Daten sind unzulässig" zurück. (GetLastError) - <Versionsinfo in das Projekt übernehmen> ist angehakt. Woran kann das liegen???


Delphi-Quellcode:
  function GetFileVersion(const FileName: string): string;
  var
    VersionInfoSize, VersionInfoValueSize, Zero: DWord;
    VersionInfo, VersionInfoValue: Pointer;
  begin

    Result := '';
    VersionInfoSize := GetFileVersionInfoSize(PChar(FileName), Zero);
    Result := SysErrorMessage(GetLastError);
    if VersionInfoSize = 0 then Exit; //<<<------------------------------------------------------------------------
       
    GetMem(VersionInfo, VersionInfoSize);
    try
      if GetFileVersionInfo(PChar(FileName), 0, VersionInfoSize, VersionInfo) and
        VerQueryValue(VersionInfo, '\' { root block }, VersionInfoValue,
        VersionInfoValueSize) and (0 <> LongInt(VersionInfoValueSize)) then
      begin
        with TVSFixedFileInfo(VersionInfoValue^) do
          Result := Format('%d.%d.%d Build %d',[HiWord(dwFileVersionMS),
                                                LoWord(dwFileVersionMS),
                                                HiWord(dwFileVersionLS),
                                                LoWord(dwFileVersionLS)]);
      end;
    finally
      FreeMem(VersionInfo);
    end; {try}

  end; {GetFileVersion}
MfG Willie

gsh 4. Dez 2008 10:26

Re: Programm Version Info
 
Siehst du im Explorer wenn du rechts auf die große Datei klickst und dann auf Eigenschaften gehst das es dort einen Reiter Version gibt? Bzw. ob die Informationen dort richtig drinnen stehen

turboPASCAL 4. Dez 2008 10:41

Re: Programm Version Info
 
Wie gsh schon sagte, es wird daran liegen das die Datei keine Fileversioninformationen hat.

Willie1 4. Dez 2008 10:47

Re: Programm Version Info
 
Der Reiter bei Vista heißt Details. Da stehen tatsächlich KEINE Versionsinformationen. Meine Frage ist WARUM? In Projekt Optionen ist "Versionsinfo in das Projekt übernehmen" angehakt!!! Ich bin ratlos.

Für einen Tipp wäre ich dankbar ...

nahpets 4. Dez 2008 10:51

Re: Programm Version Info
 
Hallo,

in der .dof-Datei zum Projekt müssten die Versionsinfos stehen, die nachher in die Exe eingefügt werden. Sind die da?
Erstelle das Projekt mal vollständig neu (Shift-F9).

Willie1 4. Dez 2008 11:19

Re: Programm Version Info
 
Alles neu kompilieren hat geholfen!!! Das Ganze ist mir trotzdem ein Rätsel. Das Prg ist nicht neu, ich hatte lediglich einen Bug entfernt.
Danke ...

W.

nahpets 4. Dez 2008 11:46

Re: Programm Version Info
 
Hallo,

bin mir nicht sicher, aber die Versionsinfos werden nur beim Neuerstellen eingebunden und nicht beim einfachen Kompilieren. Wird also die Exe beim Kompilieren nach marginalen Änderungen neu erstellt, so ist sie ohne die Versionsinfos.

Willie1 4. Dez 2008 11:59

Re: Programm Version Info
 
Man lernt immer noch dazu - das Problem hatte mich ganz "verrückt" gemacht!!!
MfG

Willie1 5. Dez 2008 17:55

Re: Programm Version Info Wichtiger Nachtrag!
 
Wichtiger Nachtrag!!!

Mit ist eben aufgefallen, dass das kompillierte Programm unter Windows 98 abstürzt, wenn ich die About-Box öffnen will, die die Versionsinfos enthält. Unter W98 stürzt der ganze Explorer ab, wenn ich mit Rechtsklick Eigenschaften/Version anzeigen will. Wa zum Teufel ist da los?

MfG
Willie

turboPASCAL 5. Dez 2008 18:14

Re: Programm Version Info
 
Wenn Möglich häng bitte mal die Exe an als Zip.

Die Versionsinfo hast du per IDE -> Projekt -> Optionen etc. hinzugefügt ?
Du verwendest den obigen Code ?
Wie sieht denn der Aufruf in der Aboutbox aus ?

Willie1 6. Dez 2008 16:33

Re: Programm Version Info
 
Hallo turboPASCAL,
Versionsinfo habe ich aus der IDE über Projekt/Optionen/VersionsInfo eingefügt.

Ich bin sicher, dass es nichts mit der Aboutbox zu tun hat, weil's auch im Explorer kracht, wenn ich im Explorer Eigenschaften/Version aufrufe. Das Zippen der Exe bringt nicht viel, weil es unter XP/Vista keine Probleme gibt. Ich benutze den obigen Code schon seit 2 Jahren und habe schon oft VersionsInfos eingefügt!
Bug von Delphi ?

Willie

Zacherl 6. Dez 2008 16:35

Re: Programm Version Info
 
Häng mal bitte die Resource in Binärform an. Dann gucke ich mal ob die vielleicht invalid ist.

Willie1 9. Dez 2008 11:17

Re: Programm Version Info
 
Hi, ich habe festgestellt, dass am Ende des VersionInfo sich irgendwelcher Datenmüll angesammelt hat, weiß nicht woher das kommt. Ich habe das VersionsInfo völlig neu erstellt, jetzt klappt's. Die neue exe-Datei ist 2 MB KLEINER. Wieso es dazu gekommen ist, ist mir schleierhaft, vielleicht wirklich ein Bug von Delphi!?!

Willie


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