È necessario trasmettere almeno un valore sul lato destro a Int64
. Per esempio, entrambe queste compilare perfettamente su XE6:
const
minDriveFreeSpace = Int64(1024) * 1024 * 1024 * 99;
var
minDriveFreeSpace2: Int64;
begin
minDriveFreeSpace2 := Int64(1024)*1024*1024*99;
Nota che può essere uno qualsiasi dei rvalues che vengono espressi. Ad esempio, questo funziona altrettanto bene:
const
minDriveFreeSpace = 1024 * 1024 * 1024 * Int64(99);
Questo è documentato nella Delphi language guide (anche se piuttosto mal) - enfasi miniera:
In generale, le operazioni aritmetiche su interi restituiscono un valore di digitare Intero, che è equivalente al LongInt a 32 bit. Le operazioni restituiscono un valore di tipo Int64 solo quando eseguito su uno o più operandi Int64. Pertanto, il seguente codice produce risultati non corretti:
var
I: Integer;
J: Int64;
...
I := High(Integer);
J := I + 1;
per ottenere un valore di ritorno Int64 in questa situazione, ho lanciato come Int64:
...
J := Int64(I) + 1;
fonte
2014-05-13 15:06:50
Interessante! Sembra che sia anche correlato alla rappresentazione dello spce del disco in quella domanda (duplicata) simile segnalata da David. –