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 に答える