【问题标题】:Delphi 10.2 How do I get Log.d to ignore % in the HTML source code?Delphi 10.2 如何让 Log.d 忽略 HTML 源代码中的 %?
【发布时间】:2019-01-01 17:33:43
【问题描述】:

如何让Log.d 在 HTML 源代码中忽略 %?还是告诉Log.d不要格式化代码?

我发送给我的程序的 HTML 代码:

<input type="hidden" name="Mode" value="Search%20Statutes" />

我创建的程序:

procedure ThtmlParser.DebugText(ExtraStr, Str: string);
var
  CombineStrings: string;
begin
  CombineStrings := ExtraStr + Str;
  Log.d(CombineStrings);
  if Assigned(FOnDebug) then
  begin
     FOnDebug(CombineStrings);
  end;
end;

我如何使用它:

Target := '<input type="hidden" name="Mode" value="Search%20Statutes" />'
DebugText('Target: ', Target);

我得到的错误:

First chance exception at $756C1812. Exception class EConvertError with message 'No argument for format 'Target: <input type="hidden" na''. Process htmlParserExample.exe (5168)

我认为正在发生的事情是,Log.d 认为 HTML 代码中的 % 是用于格式化,而不是。

【问题讨论】:

  • ThtmlParser 的其余部分在哪里声明? log.d 的声明是什么?
  • @MartynA Log.d 在 FMX.Types 中
  • @DaveNottage:但是读者应该如何猜测 OP 指的是什么? q 上甚至没有 FireMonkey 标签。
  • @MartynA log.d 也可被 VCL 项目访问,尽管在 FMX.Types 中!
  • @PatHeuvel:是的,但读者不必猜测这是否是 te log.d OP 的意图;信息应该在 q 中。

标签: delphi format arguments firemonkey delphi-10.2-tokyo


【解决方案1】:

由于 Delphi 正在“寻找一种格式”,我给它一个格式来遵循。

我不知道为什么 Delphi 的开发团队会创建一个 class procedure d(const Msg: string); overload; inline; 而不让我们使用它?这就是让我感到困惑的原因。因此,我改为使用它:

class procedure d(const Fmt: string; const Args: array of const); overload;

这是解决我的问题的新程序:

procedure ThtmlParser.DebugText(ExtraStr, Str: string);
var
  CombineStrings: string;
begin
  CombineStrings := ExtraStr + Str;
  Log.d('%s',[CombineStrings]);
  if Assigned(FOnDebug) then
  begin
     FOnDebug(CombineStrings);
  end;
end;

【讨论】:

  • 我会改用Log.d('%s%s', [ExtraStr, Str]),并去掉CombineStrings。您还应该 file a bug report 关于 Log.d() 行为不端的单参数版本。它不应该格式化任何东西。
  • @Remy, ElDiablo: Log.d(Msg) 似乎打电话给Log.d(Msg, []);。这确实是一个错误。应该反过来。或者它可以调用Log.d('%s', [Msg]);。这样就好了。
  • 刚刚收到通知,我的报告与 quality.embarcadero.com/browse/RSP-20021 重复,这已在 Delphi 10.3 Rio 中解决。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2021-05-21
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2015-03-22
  • 2010-10-15
  • 2012-05-16
相关资源
最近更新 更多