从通过 Indy 检索的页面源中获取 HTML 表单中的默认表单值的最简单方法?

The easiest way to get default form values in a HTML form from a page source retrieved via Indy?

我想修改我在网站上的个人资料信息,为此我正在使用 Indy。我的问题是:当我(通过 Indy)获取个人资料页面的内容时,该页面将有一个表格,其中包含所有先前填写的信息 checked/completed。如果我想更改该信息,我必须 POST (通过 Indy)所有以前的(未更改的)值和更改的值,否则,如果我 POST 只有我想更改的值,未更改的将被注册为空,从而从我的个人资料中删除。我的问题是,是否有一种简单的方法可以从表单的 HTML 中获取预填充值,以便我可以重新 post(并在需要的地方修改)它们?

你可以使用https://github.com/Zeus64/alcinoe字符串组件,很简单,你需要使用:

function  ALFastTagReplace(const SourceString, TagStart, TagEnd: AnsiString;
                           ReplaceExtendedProc: TALHandleTagExtendedfunct;
                           StripParamQuotes: Boolean;
                           ExtData: Pointer;
                           Const flags: TReplaceFlags=[rfreplaceall];
                           const TagReplaceProcResult: Boolean = False): AnsiString; overload;

示例:

 ALFastTagReplace(MyHtmlString, // Const SourceString, 
                  '<input' // TagStart, 
                   '>', // TagEnd: AnsiString;
                   function(const TagString: AnsiString;
                                   TagParams: TALStrings;
                                   ExtData: pointer;
                                   Var Handled: Boolean;
                                   Const SourceString: AnsiString;
                                   Var TagPosition, TagLength: integer): AnsiString;
                   begin
                     Myprefilledvalues.add(TagString + '=' + TagParams.values['value'])
                   end,
                   true, // StripParamQuotes 
                   nil); // ExtData