delphi idhttpserver 搜索参数
delphi idhttpserver search parameter
我想在 Delphi 的 idhttpserver 中 search/compair 参数(GET)。
我确实有办法做到这一点,但我想知道是否有更简单的方法。
这是我现在使用的方法:
procedure TForm1.IdHTTPServer1CommandGet(AContext: TIdContext;
ARequestInfo: TIdHTTPRequestInfo; AResponseInfo: TIdHTTPResponseInfo);
var
para:string;
paraa:tstringlist;
begin
for para in arequestinfo.params do
begin
paraa := tstringlist.Create;
paraa.StrictDelimiter := True;
paraa.Delimiter := '=';
paraa.DelimitedText := para;
if paraa[0] = '...' then
begin
if paraa[1] = '...' then
begin
...
end;
end;
paraa.Free;
end;
end;
我正在使用 delphi xe7
在我看来,使用字符串列表仅解析 param=value
对是浪费资源。更糟糕的是,您正在为每个迭代参数创建和销毁一个字符串列表实例,并且错过了使用 try..finally
的机会,因此您冒着内存泄漏的风险。我会做这样的事情:
procedure TForm1.IdHTTPServer1CommandGet(AContext: TIdContext;
ARequestInfo: TIdHTTPRequestInfo; AResponseInfo: TIdHTTPResponseInfo);
var
Param: string;
Parts: TArray<string>;
begin
for Param in ARequestInfo.Params do
begin
Parts := Param.Split(['=']);
// Parts[0] should now contain the parameter name
// Parts[1] should now contain the parameter value
end;
end;
Params
是一个 TStrings
,它具有索引 Names[]
and ValueFromIndex[]
属性:
procedure TForm1.IdHTTPServer1CommandGet(AContext: TIdContext;
ARequestInfo: TIdHTTPRequestInfo; AResponseInfo: TIdHTTPResponseInfo);
var
name, value: string;
I: index;
begin
for i := 0 to ARequestInfo.Params.Count-1 do
begin
Name := ARequestInfo.Params.Names[i];
Value := ARequestInfo.Params.ValueFromIndex[i];
if Name = '...' then
begin
if Value = '...' then
begin
...
end;
end;
end;
end;
我想在 Delphi 的 idhttpserver 中 search/compair 参数(GET)。 我确实有办法做到这一点,但我想知道是否有更简单的方法。 这是我现在使用的方法:
procedure TForm1.IdHTTPServer1CommandGet(AContext: TIdContext;
ARequestInfo: TIdHTTPRequestInfo; AResponseInfo: TIdHTTPResponseInfo);
var
para:string;
paraa:tstringlist;
begin
for para in arequestinfo.params do
begin
paraa := tstringlist.Create;
paraa.StrictDelimiter := True;
paraa.Delimiter := '=';
paraa.DelimitedText := para;
if paraa[0] = '...' then
begin
if paraa[1] = '...' then
begin
...
end;
end;
paraa.Free;
end;
end;
我正在使用 delphi xe7
在我看来,使用字符串列表仅解析 param=value
对是浪费资源。更糟糕的是,您正在为每个迭代参数创建和销毁一个字符串列表实例,并且错过了使用 try..finally
的机会,因此您冒着内存泄漏的风险。我会做这样的事情:
procedure TForm1.IdHTTPServer1CommandGet(AContext: TIdContext;
ARequestInfo: TIdHTTPRequestInfo; AResponseInfo: TIdHTTPResponseInfo);
var
Param: string;
Parts: TArray<string>;
begin
for Param in ARequestInfo.Params do
begin
Parts := Param.Split(['=']);
// Parts[0] should now contain the parameter name
// Parts[1] should now contain the parameter value
end;
end;
Params
是一个 TStrings
,它具有索引 Names[]
and ValueFromIndex[]
属性:
procedure TForm1.IdHTTPServer1CommandGet(AContext: TIdContext;
ARequestInfo: TIdHTTPRequestInfo; AResponseInfo: TIdHTTPResponseInfo);
var
name, value: string;
I: index;
begin
for i := 0 to ARequestInfo.Params.Count-1 do
begin
Name := ARequestInfo.Params.Names[i];
Value := ARequestInfo.Params.ValueFromIndex[i];
if Name = '...' then
begin
if Value = '...' then
begin
...
end;
end;
end;
end;