6

我必须在 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

谢谢。

4

1 回答 1

15

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

改为声明一个变量,并将其分配在代码的常规 begin-end 块中:

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;
于 2012-06-21T17:34:31.340 回答