Er hatt den Code von da oben einfach "nur" zerlegt.
Wobei da immernoch die doppelte Konvertierung drin steckt, obwohl ja Eine (der beispielhaft 6 da unten Stehenden) reicht.
Delphi-Quellcode:
v1 := StrToInt64('$07FFFFFF');
v2 := StrToInt64('$04000000');
v3 := v1 - v2; //v3 := (v1 - v2) div 2;
log(Format('range total: $%.8x', [v3])));
v1 := StrToInt64('$07FFFFFF');
v2 := StrToInt64('$04000000');
log(Format('range total: $%.8x', [v1 - v2])));
log(Format('range total: $%.8x', [StrToInt64('$07FFFFFF') - StrToInt64('$04000000')])));
// oder
v1 := StrToInt64('$07FFFFFF');
v2 := StrToInt64('$04000000');
v3 := v1 - v2; //v3 := (v1 - v2) div 2;
log('range total: $' + IntToHex(v3, 8));
v1 := StrToInt64('$07FFFFFF');
v2 := StrToInt64('$04000000');
log('range total: $' + IntToHex(v1 - v2, 8));
log('range total: $' + IntToHex(StrToInt64('$07FFFFFF') - StrToInt64('$04000000'), 8));
// gegenüber
log('range total: ' + '$' + (Format('%.8x',[strtoint64('$' + inttohex(((StrToInt64('$07FFFFFF') - StrToInt64('$04000000')) div 2), 8))])));
Nutzlose Klammern und unnötige Befehle können auch die Lesbarkeit behindern.
Bei den aufgeteilten Varianten wäre das
div 2
bestimmt ganz schnell aufgefallen.
PS: Das
CamelCase diehnt der Lesbarkeit und die sollte Im Code tunlichst nicht verloren gehen. [StrToInt64]
Nur zur Info: Das underscore-separated, z.B. aus der
WinAPI, hat den selben Grundgedanken. [str_to_int_64 / STR_TO_INT_64]