本人对delphi一知半解,现在是这样的需求,
需要用应用程序的形式得到internet上的一个文件里面的变量值,这个数据是远程主机上的mysql数据库中的数据,但是是虚拟主机,不允许远程链接,我想通过WEB形式,把它读到HTMl中,然后用应用程序得到它们的数据,这个页面的形式可以随便我写,但是我现在想要把它读到应用程序中来,我想用的方法是这样的
HTML代码如下
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=gb2312">
<title></title>
</head><body>
<form name="form1" method="post" action="">
  <input name="a1" type="hidden" id="a1" value="aaaaaaaaaaa">
  <input name="a2" type="hidden" id="a2" value="bbbbbbbbbbbb">
  <input name="a3" type="hidden" id="a3" value="cccccccccccccc">
  <input name="a4" type="hidden" id="a4" value="ddddddddddd">
  <input name="a5" type="hidden" id="a5" value="eeeeeeeeeeeeee">
  <input name="a6" type="hidden" id="a6" value="fffffffffff">
  <input name="a_total" type="hidden" id="a_total" value="6">
</form>
</body>
</html>我想通过得到a_total的数值,然后把其它的a1到a6的值读到一个列表框中。
或者使用
a_1='dfsfaaaaaaaaaadsf';
a_2='dsfdsbbbbbbbbbf';
a_3='dsfdsfccccccccdsf';
a_total=3;
这种形式,现在我用WebBrowser控件,请问我怎么样才能得到这样的数据。最好有源码,分不是问题。谢谢。如果还有其它方法也行,只是不能用数据库。

解决方案 »

  1.   

    不要用webbrowser
    用idhttpidhttp可以get 也可以post   得到。。write来的字符。
    比如:
    showmessage(idhettp.get('http://www.aaa.com/index.asp'));
      
    你的index.asp页面是
    <%
    respones.write "asdfas"
    %>show的结果就是   asdfas你可以用post把变量发过去让页面requestvar
    temp:tstrings;
    begin
    temp:=tstringlist.create;
    //temp:=.
    temp.add('a=df');//加变量采用temp.add('变量名=值'),多个就add多次
    showmessage(idhttp.post('http://www.aaa.com/index.asp',temp));
    end;你的index
    <%
    respones.write request("a")
    %>showmessage的结果就是   df
      

  2.   

    var
      Docs, ovElements: OleVariant;
      i: integer;
    begin
      {WebBrowser1.Navigate('http://.../*.htm');
      while WebBrowser1.ReadyState < READYSTATE_COMPLETE do
        Application.ProcessMessages;}  Docs := WebBrowser1.OleObject.Document;
      ovElements := Docs.GetElementByID('a_total');
      edit1.text := ovElements.Value; //取[a_total]的値  ovElements := Docs.all.tags('INPUT');
      for i := 0 to (ovElements.Length - 1) do
        if (UpperCase(ovElements.item(i).type) = 'HIDDEN') then
        begin
           //用ID取a1...an値
        end;
    end;
      

  3.   

    不是还可以更简单么?HTML是一种,另外,做成XML或者INI格式的文本,不好么?依赖性弱
    不需要依赖微软的IE浏览器。
      

  4.   

    wb: TWebBrowser;
    ...
    procedure TForm1.FormCreate(Sender: TObject);
    begin
      wb.Navigate('d:\sec.htm');
    end;procedure TForm1.Button1Click(Sender: TObject);
    var
      ov: OleVariant;
      i: Integer;
    begin
      if wb.Busy then Exit;
      meo.Lines.Clear;
      ov := wb.OleObject.Document.form1.elements;
      for i := 0 to (ov.Length - 1) do
        if ov.Item(i).type = 'hidden' then
          meo.Lines.Append(ov.Item(i).name + '=' + ov.Item(i).Value);
      //meo.Lines.Append(ov.Item(i).id+'|'+ov.Item(i).tagName +'|'+ ov.Item(i).type +'|'+ov.Item(i).name+'|'+ov.Item(i).Value);
    end;
      

  5.   

    要从MYSQL中通过HTTP取得数据?你的网页却是发送数据!
    取数据可以用PHP生成XML数据文件,idHTTP读结果,这样效率比HTML高