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



我想修改网站上的个人资料信息,我正在使用Indy。我的问题是:当我(通过Indy(获得个人资料页面的内容时,该页面将有一个表单,其中包含检查/完成的所有先前填写的信息。如果我想更改该信息,我必须(通过Indy(POST所有以前(未更改(的值和已更改的值,否则,如果我只POST我想更改的值时,未更改的值将被注册为空,从而从我的配置文件中删除。我的问题是,有没有一种简单的方法可以从表单的HTML中获取预先填充的值,这样我就可以重新发布(并在需要的地方进行修改(它们?

您可以使用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 

最新更新