Sag mal, findest Du deinen Code nicht fürchterlich unleserlich?
Delphi-Quellcode:
v1 := StrToInt64('$07FFFFFF');
v2 := StrToInt64('$04000000');
v3 := (v1 - v2) div 2;
log('range total: ' + '$' + (Format('%.8x',[strtoint64('$' + inttohex(v3, 8))])));
Aber wieso konvertierst Du eigentlich von int nach hex und dann wieder von hex nach int? Na wirst schon deine Gründe haben.