Bạn cần truyền ít nhất một giá trị ở bên phải sang Int64
. Ví dụ: cả hai cách biên dịch hoàn toàn tốt trên XE6:
const
minDriveFreeSpace = Int64(1024) * 1024 * 1024 * 99;
var
minDriveFreeSpace2: Int64;
begin
minDriveFreeSpace2 := Int64(1024)*1024*1024*99;
Lưu ý rằng nó có thể là một trong các giá trị được đúc. Ví dụ, các công trình này đều cũng như:
const
minDriveFreeSpace = 1024 * 1024 * 1024 * Int64(99);
này được diễn tả trong Delphi language guide (mặc dù khá kém) - nhấn mạnh tôi:
Nói chung, phép toán số học trên số nguyên trả về giá trị gõ Integer, tương đương với LongInt 32-bit. Hoạt động trả về giá trị kiểu Int64 chỉ khi được thực hiện trên một hoặc nhiều toán hạng Int64. Do đó, các mã sau đây tạo ra kết quả không chính xác:
var
I: Integer;
J: Int64;
...
I := High(Integer);
J := I + 1;
Để có được một giá trị trả về Int64 trong tình huống này, đúc tôi như Int64:
...
J := Int64(I) + 1;
Nguồn
2014-05-13 15:06:50
Thú vị! Dường như nó cũng liên quan đến đại diện cho đĩa spce trong tương tự (trùng lặp) câu hỏi được chỉ ra bởi David. –