Der Ausdruck wird zuerst als Integer ausgewertet und erst dann zugewiesen. Du musst mindestens einen der Summanden als Int64 typecasten (oder gleich also solchen deklarieren), dann wird es funktionieren:
Delphi-Quellcode:
Result:=Int64(i1) * 16777246 +
i2 * 65536 +
i3 * 256 +
i4;