Ich würde dir hier empfehlen schon in deiner
DLL auf die arithmetischen Operationen zu verzichten und deine Versionsnummer stattdessen so zusammenzusetzen (davon ausgehend, dass die einzelnen Nummern jeweils Bytes - genauer gesagt unsigned 8-bit ints sind):
Result := (Ver_Major_Hi shl 24) or (Ver_Major_Lo shl 16) or (Ver_Minor_Hi shl 8) or Ver_Minor_Lo;
Dann kannst du die Rückrechnung nämlich einfach analog mit right-shifts vornehmen:
Delphi-Quellcode:
Ver_Major_Hi := (Version shr 24) and $FF;
Ver_Major_Lo := (Version shr 16) and $FF;
Ver_Minor_Hi := (Version shr 8) and $FF;
Ver_Minor_Lo := Version and $FF;
oder in C:
Delphi-Quellcode:
Ver_Major_Hi = (Version >> 24) & 0xFF;
Ver_Major_Lo = (Version >> 16) & 0xFF;
Ver_Minor_Hi = (Version >> 8) & 0xFF;
Ver_Minor_Lo = Version & 0xFF;
Deine jetzige Version macht - vor allem mit der hexadezimalen Multiplikation - nicht allzu viel Sinn. Wenn du die Faktoren in Dezimalform bringst, würde es funktionieren. Dann müsstest du allerdings mit
div
und
mod
zurückrechnen, was ich persönlich weniger elegant finde.