Bei XE8 habe ich das Problem auch.
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;