Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Sonstige Fragen zu Delphi (https://www.delphipraxis.net/19-sonstige-fragen-zu-delphi/)
-   -   XE7 File version falsch (https://www.delphipraxis.net/184225-xe7-file-version-falsch.html)

sahimba 10. Mär 2015 11:44

XE7 File version falsch
 
Liste der Anhänge anzeigen (Anzahl: 2)
Moin,
ich habe hier ein Projekt mit Versionsinformationen. In der Delphi IDE stehen unter "Version Info" die korrekten Werte. Major/Minor/Release/Build und auch unter "FileVersion" steht der korrekte Eintrag.
Schaue ich dann in der erzeugten Exe nach, so steht dort unter "FileVersion" ein anderer Wert: 2.7.5547.45159.
Und ich habe im Moment genau keine Idee, wo der Compiler/Linker das hernimmt :cry:

sahimba 10. Mär 2015 11:47

AW: XE7 File version falsch
 
Okay. Kaum gepostet, finde ich den Fehler... das ist wohl der Quietscheenteneffekt.
Unter "Build number options" war "Auto generate" ausgewählt. Es sollte aber "Auto Increment" sein... :oops:

haentschman 10. Mär 2015 16:55

AW: XE7 File version falsch
 
Zitat:

Unter "Build number options" war "Auto generate" ausgewählt.
:gruebel: Was ist das denn für ein Feature. Wer läßt denn diese automatisch per Zufall generieren? :shock:

Union 10. Mär 2015 16:59

AW: XE7 File version falsch
 
Kein Zufall:
number of seconds since midnight (00:00:00), divided by 2

Karsten der Kelte 24. Aug 2015 10:19

AW: XE7 File version falsch
 
Bei XE8 habe ich das Problem auch.

Zitat:

Zitat von Union (Beitrag 1292960)

Nur dass Delphi diese Division nicht macht?

Die vrc-Datei sagt die komplette Build Nr.:

FILEVERSION 1, 7, 5713, 67807
67807 = 18:50:07
0x 1 08DF

FILEVERSION 1, 7, 5713, 2271
EXE-Datei Änderungsdatum: 24.08.2015 00:37
2271 = 00:37:51
0x 08DF

FILEVERSION 1, 7, 5714, 39388
EXE-Datei Änderungsdatum: 24.08.2015 10:56
39388 = 10:56:28
0x 99DC

vrc-Datei: FILEVERSION 1, 7, 5714, 85111
Resource in EXE: FILEVERSION 1,7,5714,19575
EXE-Datei Änderungsdatum: 24.08.2015 23:38
Eigenschaften der EXE: 1.7.57.14.19575
dwFileVersionLS: 0x 1652 4C77
85111 = 23:38:31
85111 = 0x 1 4C77
19575 = 0x 4C77

Offensichtlich wird die Zahl direkt verwendet, ohne Sie vorher um das niederwertigste Bit zu erleichtern. Leider fehlt dann das höherwertigste Bit am Abend (>$FFFF), da die Build-Nr in dwFileVersionLS nur WORD ist.

Oder gibts eine andere Variante die Build-Nr zu ermitteln?

Delphi-Quellcode:
function GetCurrentVersionBuild: DWord;
var
   VerInfoSize: DWORD;
   VerInfo: Pointer;
   VerValueSize: DWORD;
   VerValue: PVSFixedFileInfo;
   Dummy: DWORD;
begin
   VerInfoSize := GetFileVersionInfoSize(PChar(ParamStr(0)), Dummy);
   GetMem(VerInfo, VerInfoSize);
   GetFileVersionInfo(PChar(ParamStr(0)), 0, VerInfoSize, VerInfo);
   VerQueryValue(VerInfo, '\', Pointer(VerValue), VerValueSize);
   with VerValue^ do
   begin
      Result := dwFileVersionLS and $FFFF;
   end;
   FreeMem(VerInfo, VerInfoSize);
end;


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