1

我没有内联结构,例如

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 中是如何完成的。

4

1 回答 1

1

正如@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;
于 2020-12-23T23:28:22.733 回答