You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Delphi新手转换JSON为类时调用ToString报无对应重载版本错误

Delphi TStringBuilder.ToString 重载报错解决方案

报错根因

Delphi 原生的TStringBuilder类的ToString方法不存在接受布尔类型参数的重载,你代码中调用ToString(True)传入了布尔参数,和已有的方法签名不匹配,因此触发编译错误。

修复方法

直接删除ToString调用的入参True,调用无参版本即可返回拼接完成的完整字符串,修正后的代码如下:

with TStringBuilder.Create do
  try
    for s in List do
      Append(s);

    Result := ToString;
  finally
    free;
  end;

可选优化建议

with语句在Delphi中容易引发变量作用域混淆的问题,新手使用时更容易出现意料之外的错误,建议改为显式声明实例变量的写法,可读性和可维护性更高:

var
  LStrBuilder: TStringBuilder;
begin
  LStrBuilder := TStringBuilder.Create;
  try
    for s in List do
      LStrBuilder.Append(s);
    Result := LStrBuilder.ToString;
  finally
    LStrBuilder.Free;
  end;
end;

额外说明

你会写出带布尔参数的ToString调用,大概率是混淆了其他类的同名方法逻辑,比如部分版本的TStringList的相关方法有接收布尔参数控制是否包含换行的重载,但TStringBuilder本身不需要这个参数,所有内容已经通过Append调用拼接在内部缓冲区中,直接调用无参方法就能拿到全部拼接结果。

内容的提问来源于stack exchange,提问作者Pablo Campos

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.07 12:15:04