2012-06-21 74 views
5

tôi phải di chuyển một tập tin trong thư mục system32, tôi đã sử dụng mã này:Tại sao tôi nhận được "E2026 biểu thức liên tục mong đợi"?

//-----------FUNCTION---------------- 
function GetWindowsSystemDir(): String; 
var 
    vlBuff: Array[0..MAX_PATH-1] of Char; 
begin 
    getSystemDirectory(vlBuff, MAX_PATH); 
    Result := vlBuff; 
end; 
//----------------------------------- 

const 
    SMyFile = GetWindowsSystemDir+'\intructions.txt'; //error here, line 87 
var 
    S: TStringList; 
begin 
    S := TStringList.Create; 
    try 
    S.Add('intructions'); 
    S.SaveToFile(SMyFile); 
    finally 
    S.Free; 
    end; 
end; 

mang lại cho tôi lỗi khi biên dịch:

[DCC Error] Unit1.pas(87): E2026 Constant expression expected 

Cảm ơn.

Trả lời

14

Khi thông báo lỗi trình biên dịch cho biết, nó mong đợi một biểu thức liên tục mà bạn đang khởi tạo const. Nhưng bạn đang gọi một hàm ở đó, và trình biên dịch sẽ không đánh giá nó ở thời gian biên dịch.

Khai báo một biến thay vào đó, và gán nó vào bên trong khối bắt đầu cấp thường xuyên của mã của bạn:

var 
    SMyFile: string; 
    S: TStringList; 
begin 
    S := TStringList.Create; 
    try 
    S.Add('intructions'); 
    SMyFile := GetWindowsSystemDir+'\intructions.txt'; 
    S.SaveToFile(SMyFile); 
    finally 
    S.Free; 
    end; 
end; 
+0

Cảm ơn bạn, câu trả lời hoàn hảo! –

+0

@GiacomoKingPatermo: bạn nên "chấp nhận" câu trả lời nếu nó giải quyết được vấn đề của bạn. – LightBulb

+3

@LightBulb, có sự chậm trễ thời gian giữa thời điểm bạn đăng câu hỏi và khi bạn được phép chấp nhận câu trả lời. Vì Rob đã đăng câu trả lời của mình chỉ 2 phút sau khi câu hỏi được đăng, không đủ thời gian. Xin vui lòng không nag về chấp nhận khi nó thậm chí không thể cho poster để làm như vậy. :-) Xem [FAQ] (http://stackoverflow.com/faq) để có giải thích về cách thức chấp nhận hoạt động. –

Các vấn đề liên quan