Delphi 10.2 如何让 Log.d 忽略 HTML 源代码中的 %?
Delphi 10.2 How do I get Log.d to ignore % in the HTML source code?
如何让 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 6C1812. Exception class EConvertError with message 'No argument for format 'Target: <input type="hidden" na''. Process htmlParserExample.exe (5168)
我认为正在发生的事情是,Log.d
认为 HTML 代码中的 %
用于格式化,但实际上不是。
因为 Delphi 是 "looking for a format",我给了它一个格式来遵循。
我不知道为什么 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
忽略 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 6C1812. Exception class EConvertError with message 'No argument for format 'Target: <input type="hidden" na''. Process htmlParserExample.exe (5168)
我认为正在发生的事情是,Log.d
认为 HTML 代码中的 %
用于格式化,但实际上不是。
因为 Delphi 是 "looking for a format",我给了它一个格式来遵循。
我不知道为什么 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;