delphi - 在Delphi匿名方法中不能使用var参数吗?

标签 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.

代码可以编译,但运行时出现访问冲突错误(并且没有大写字符串)。如果我删除的引用,代码将按预期工作。

最佳答案

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

关于delphi - 在Delphi匿名方法中不能使用var参数吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35090503/

相关文章:

delphi - 使用优先级参数创建进程?

delphi - 使用 TEmbeddedWB 或 TWebBrowser 检测外部内容

database - SQL SERVER 中的 String 到 Money 数据类型

java - 我怎样才能避免在子类中创建无用的传递构造函数只是为了将参数传递给 "super()"?

c++ - 这个设置有什么问题?

javascript - 基本的 If else 语句在 JavaScript 中不起作用

swift - 绕过 Swift 中的 let 参数

delphi - 创建无边框表单而不丢失 Windows 命令

c# - LINQ2SQL : How do I declare a member variable of type var?

windows - 当作为远程桌面应用程序运行时,Delphi TOpenDialog 在 Windows 2008 中挂起