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

Gia*_*rmo 6 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;
Run Code Online (Sandbox Code Playgroud)

编译时给我错误:

[DCC Error] Unit1.pas(87): E2026 Constant expression expected
Run Code Online (Sandbox Code Playgroud)

谢谢.

Rob*_*edy 15

正如编译器错误消息所指示的那样,它需要一个常量表达式来初始化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;
Run Code Online (Sandbox Code Playgroud)

  • @LightBulb,在您发布问题和允许接受答案之间有一段时间延迟.由于Rob在问题发布后仅仅2分钟就发布了答案,因此没有足够的时间过去.请不要唠叨接受什么时候海报甚至不可能这样做.:-)请参阅[FAQ](http://stackoverflow.com/faq),了解接受的工作原理. (3认同)