如何在 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;
我无法内联结构,例如
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;