在D2007中连接字符串时,此访问冲突的原因是什么?

Sam*_*Sam 0 delphi string constants delphi-2007

我有一个接受2个字符串参数的过程,其中一个具有默认值.在程序中,我想连接一个和另一个以及一些文字以形成一个更大的字符串.不知怎的,我正在收到一个AV ...任何想法?

代码是这样的

{$WRITEABLECONST ON}
constructor MyClass.Create(s1: string; s2: string = GlobalConstant);
var s3: string;
begin
    ....
    if (s2 = '') then s2 := GlobalConstant + ' (' + s1 + ')';      // AV here
    ....
end;
Run Code Online (Sandbox Code Playgroud)

如果我给你GlobalConstant + ' (' + s1 + ')s3,然后分配s3s2的AV消失.为什么?直接写入字符串参数有什么问题?

Pau*_*Jan 6

代码中的其他内容是错误的,间接导致该位置的访问冲突(损坏).使用FastMM和FullDebugMode来确定它是什么,以及如何解决它.