如何在 Rio 中内联静态数组变量

How to inline static array variables in Rio

我无法内联结构,例如

var FileName: array[0..2047] of Char;

这个有效:

procedure TForm1.AcceptFiles(var Msg: TWMDropFiles);
var FileName: array[0..2047] of Char;
begin
  DragQueryFile(msg.Drop, $FFFFFFFF, FileName, 2048);
  ...
end;

但是如果 FileName 是内联的,这会失败:

procedure TForm1.AcceptFiles(var Msg: TWMDropFiles);
begin
  var FileName: array[0..2047] of Char; // E2029 Expression expected but array found
  DragQueryFile(msg.Drop, $FFFFFFFF, FileName, 2048);
  ...
end;

我设法内联了 12K 的任何类型的变量,但似乎无法内联以下形式的任何内容:

begin
  var Name: array[X..Y] of Z;
end;

请告知在 Rio 10.3.3 中是如何完成的。

正如@Remy Lebeau 正确建议的那样,解决方案是先声明类型

procedure TForm1.AcceptFiles(var Msg: TWMDropFiles);
type
  TFileNameArray = array[0..2047] of Char;
begin
  var FileName: TFileNameArray;
  DragQueryFile(msg.Drop, $FFFFFFFF, FileName, 2048);
  ...
end;