是不是可以在Delphi匿名方法中使用var参数?

时间:2016-01-29 17:29:02

标签: delphi parameters var delphi-2009 anonymous-methods

是否无法在匿名方法中使用var参数?以下示例说明了(SSCCE)我遇到的问题:

program Project2;

{$APPTYPE CONSOLE}

type
  TTextTransformProc = reference to procedure(var AText: string);

procedure WriteTransformedText(const AText: string; AProc: TTextTransformProc);
var
  S: string;
begin
  S := AText;
  AProc(S);
  Writeln(S);
end;

procedure UpperCaseProc(var AText: string);
var
  i: integer;
begin
  for i := 1 to Length(AText) do
    AText[i] := UpCase(AText[i]);
end;

begin
  WriteTransformedText('This is a test.', UpperCaseProc);
  Readln;
end.

代码编译,但运行时我遇到访问冲突错误(并且没有大写字符串)。如果我删除reference to,代码将按预期工作。

1 个答案:

答案 0 :(得分:4)

这是一个编译器缺陷。你的代码是正确的。编译器错了。在你可以获得更现代的编译器之前,你必须找到一个解决方法。

相关问题