从通过 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
我想修改我在网站上的个人资料信息,为此我正在使用 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