我想在网站上修改我的个人资料信息,因此我正在使用Indy。我的问题是:当我(通过Indy)获取个人资料页面的内容时,该页面将具有一个表单,其中所有先前填写的信息均已检查/完成。如果要更改该信息,则必须发布(通过Indy)所有先前(未更改)的值和已更改的值,否则,如果仅发布我要更改的值,则未更改的值将被注册为空且从而使我的个人资料无效。我的问题是,是否有一种简单的方法可以从表单的HTML获取预填充的值,以便我可以将它们重新发布(并在需要时进行修改)?
答案 0 :(得分:1)
您可以为此使用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