我如何使用 npapi 读取每个参数

how do i read each param with npapi

我在我的 Delphi 项目中使用 npapi 框架工作,我能够使用当前代码读取参数

procedure TDemoPluginForm.btTestClick(Sender: TObject);
var
  obj: IBrowserObject;
  res: TStringList;
  items, n: IBrowserObject;
  i: integer;
begin
  res:=TStringList.Create;
  try
    res.Add('Plugin element details:');
    // Get object of plugin element
    obj:=Plugin.GetPluginObject;
    // Get element property
    res.Add('id=' + string(obj['id']));
    // Get child elements
    res.Add('Child nodes:');
    items:=obj.GetObject('childNodes');
    for i:=0 to items['length'] - 1 do begin
      n:=VarAsObject(items.Invoke('item', [i]));
      if CompareText(n['tagName'], 'param') = 0 then
        res.Add(Format('Tag: %s; Name: %s; Value: %s',
                      [string(n['tagName']),
                       string(n['name']),
                       string(n['value'])
                       ]));
    end;
    MessageBox(Self.Handle, PChar(res.Text), PChar('Delphi Plugin'), MB_ICONINFORMATION);
  finally
    res.Free;
  end;
end;

我如何读取每个参数及其引用。

更具体地说,如果我有这样的参数

  <param name = "delphi" value = "student" />

如果 param = delphi then somestring := its value 我怎么能读到里面 delphi?

答案触手可及,您可以使用System.SysUtils.SameText来实现您的目标:

procedure TDemoPluginForm.btTestClick(Sender: TObject);
var
  obj: IBrowserObject;
  res: TStringList;
  items, n: IBrowserObject;
  i: integer;
  value : String;

begin
  res:=TStringList.Create;
  try
    res.Add('Plugin element details:');
    // Get object of plugin element
    obj:=Plugin.GetPluginObject;
    // Get element property
    res.Add('id=' + string(obj['id']));
    // Get child elements
    res.Add('Child nodes:');
    items:=obj.GetObject('childNodes');
    for i:=0 to items['length'] - 1 do begin
      n:=VarAsObject(items.Invoke('item', [i]));
      if SameText(n['tagName'], 'param') then
       begin 
        res.Add(Format('Tag: %s; Name: %s; Value: %s',
                      [string(n['tagName']),
                       string(n['name']),
                       string(n['value'])
                       ]));
        if SameText(n['name'], 'delphi') then
         value := String(n['value']);
      end;
    end;
    MessageBox(Self.Handle, PChar(res.Text), PChar('Delphi Plugin'), MB_ICONINFORMATION);
  finally
    res.Free;
  end;
end;