为什么我会得到“预期的E2026常量表达式”?

时间:2012-06-21 17:32:15

标签: delphi constants

我必须在system32文件夹中移动一个文件,我使用了这段代码:

//-----------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;
编译时

给我错误:

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

感谢。

1 个答案:

答案 0 :(得分:14)

正如编译器错误消息所示,它需要一个常量表达式来初始化const。但是你在那里调用一个函数,编译器不会在编译时对它进行评估。

声明一个变量,并将其分配到代码的常规开始结束块中:

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;