Delphi 10.2 Как заставить Log.d игнорировать% в исходном коде HTML? - PullRequest
0 голосов
/ 01 января 2019

Как заставить 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код для форматирования, когда это не так.

1 Ответ

0 голосов
/ 01 января 2019

Поскольку 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;
...