QMacros のマクロはパラメーターの受け渡しをサポートしており、そのパラメーターの形式は JSON を参照して実行されるため、QMacros のパラメーターは JSON のすべてのデータ型 (null、true/false、数値、文字列) をサポートします。 、オブジェクト、配列の文字列の内容のエスケープも JSON の規則に従います。
[注意]
QMacros が Complie または Replace を呼び出すときにフラグ ビットが MRF_ENABLE_ESCAPE を指定し、同時に MRF_IN_DBL_QUOTER または MRF_IN_SINGLE_QUOTER が指定されている場合、JSON 内の文字列はエスケープされます。文字列内の文字列は解析され、直接エスケープされるため、パラメータ内の文字列にエスケープが含まれる場合は、二重のバックスラッシュを使用すること、つまり、 "arnb" は "a\r\nb" にすることが一般的に推奨されます。
以下は、QMacros HTML テンプレートの例のコードの一部です:
procedure TForm1.Button3Click(Sender: TObject);const STemplate: QStringW = '<html><head><title><%Title%></title></head>' + // '<body>多参数及转义示例<p>' + // '<%Info({"name":"QDAC","version":1.28,"copyright":"©QDAC team\t2016"},3.0)%>' + '</body>';var AMacros: TQMacroManager; AHtmlFile: String;begin AMacros := TQMacroManager.Create; try AMacros.Push('Title', 'QMacros HTML 模板示例'); AMacros.Push('Info', DoPrintInfo); AHtmlFile := ExtractFilePath(Application.ExeName) + 'index.html'; SaveTextW(AHtmlFile, AMacros.Replace(STemplate, '<%', '%>', MRF_PARSE_PARAMS)); WebBrowser1.Navigate('file:///' + StringReplaceW(AHtmlFile, '\', '/', [rfReplaceAll])); finally FreeAndNil(AMacros); end;end;
情報マクロは 2 つのパラメーターを提供します。 :
DoPrintInfo マクロの実装を見てみましょう:
procedure TForm1.DoPrintInfo(AMacro: TQMacroItem; const AQuoter: QCharW);beginAMacro.Value.Value:='QMacros '+AMacro.Params[1].AsString+'<BR/>';with AMacro.Params[0] do begin AMacro.Value.Value:=AMacro.Value.Value+'工程名称:'+ValueByName('name','')+'<BR/>'+ '版本号:'+ValueByName('version','')+'<BR/>'+ '版权:'+ValueByName('copyright',''); end;end;
AMacro が必要です 割り当てマクロ オブジェクトに値を割り当てるときは、結果を AMacro.Value.Value に割り当てるだけです。 AMacro.Params は TQJson 配列型のオブジェクトです。QJson の使用法に従ってマクロによって渡されるパラメーターを使用できます。これについては詳しく説明しません。
上記の例の実際の実行効果: