各位大侠不知道有没有上过传说水吧,这个聊天室隔固定时间会出现一个题目让大家抢答,答对者会增加一定经验值。现在我想通过Delphi编程实现自动答题,我有所有的题目和答案。但本人初学水平很差,所以想请各位大侠帮忙把程序编一下,所有的源文件打包发到我的信箱[email protected],最好带注解,谢谢。我初步的设想如下:每次出题目的时候系统会出现一行文字“博士:智力竞赛开始啦!竹雨松风梧月[对联],有谁知道?答对有奖!点击此处答题!(后面的语句是这样的<font color=#008888><font class=a onmouseout="this.style.textDecoration='none'"onmouseover="this.style.textDecoration='underline'" color=#000099 onclick="javascript:parent.chuser('博士')" ondblclick="window.open('topuser2.asp?selwho=博士','newsay')">博士</font>:智力竞赛开始啦!<big style=color:red><b>竹雨松风梧月</b>[对联]</big>,有谁知道?答对有奖!<a href='' style=color:3366ff onclick="var a=prompt('请输入答案!','答案');if (a) window.open('qanswer.asp?answer='+escape(a),'newsay');return false;">点击此处答题!</a></font><small></small><br>)”类似的文字,如果一出现这样一段文字就把它读出来,然后将题目复制出来,到给定的文本文件中去查找相应的答案回答就可以了。答案是每行一个题目,结构是这样的[8,"对联","竹雨松风梧月","茶烟琴韵书声",100](中括号内的内容,前面的8是序号)前面的是题目,后面就是答案了,把答案取出后按照系统要求的格式发给qanswer.asp,至此完成自动答题。哪位高手给解决了,我将所有财富赠送。

解决方案 »

  1.   

    NI的句子給出的信息不全、没有Html Document Object。如:
    <td id="td1">...</td>
    <div id="div1">...</div>也就是説在<font>...</font>的外側是用什麼括起来的?
    否則無法取値。
      

  2.   

    应该是这样的
    <font color=#008888><font class=a onmouseout="this.style.textDecoration='none'"onmouseover="this.style.textDecoration='underline'" color=#000099 onclick="javascript:parent.chuser('博士')" ondblclick="window.open('topuser2.asp?selwho=博士','newsay')">博士</font>:智力竞赛开始啦!<big style=color:red><b>竹雨松风梧月</b>[对联]
    </big>,有谁知道?答对有奖!<a href='' style=color:3366ff onclick="var a=prompt('请输入答案!','答案');if (a) window.open('qanswer.asp?answer='+escape(a),'newsay');return false;">
    点击此处答题!
    </a></font>我每个尖括号都给分开了,是不是能看清楚些,后面的是有点问题,多了个这些内容“<small></small><br>”,不过我觉得这不影响编程吧,我觉得关键是在这部分“window.open('qanswer.asp?answer='+escape(a),'newsay')”,只要把a换成查找到的标准答案然后发出去就可以了,请各位高手指点,谢谢~
      

  3.   

    cronuz(cronus) 兄,不需要知道<font>外面是什么吧,因为我看到好象有人说可以直接取到网页的源码,那样的话直接在源码中找到“智力竞赛开始啦!”这几个字,就可以确定题目的位置和内容了吧
      

  4.   

    procedure TForm1.Button1Click(Sender: TObject);
    var
      HtmlDoc: IHTMLDocument2;
    begin
      WebBrowser1.Navigate('http://www.yahoo.com');
      while Webbrowser1.ReadyState <> READYSTATE_COMPLETE do
        Application.ProcessMessages;
      HtmlDoc := WebBrowser1.Document as IHTMLDocument2;
      Memo1.Lines.Text := HtmlDoc.body.outerHTML;
    end;説明:上述SOURCE、就可以直接取到网页的源码、很簡単。
       当然也可找到“智力竞赛开始啦!”这几个字。
       但是、問題在:怎麼取得具体的「出现题目」的内容。
       「请输入答案!」時、那NI输的是什麼?题号?都不明確...
      

  5.   

    是不是在找到这几个字的位置之后就可以顺着它们找到题目,因为它们的格式是固定的,比如
    <big style=color:red><b>竹雨松风梧月</b>[对联]
    </big>
    在几个标记之间,取出这几个字就是题目啊,然后到放答案的文本文件中找到题目,取出后面的答案,文本文件没一行的格式是这样的:
    8,"对联","竹雨松风梧月","",100
    (8是序号,后面的“对联”指的是题目类型,可以忽略,再后面就是题目了,题目之后就是答案,100是奖励的经验值,呵呵)
    系统接收答案的语句就是这段
    <a href='' style=color:3366ff onclick="var a=prompt('请输入答案!','答案');if (a) window.open('qanswer.asp?answer='+escape(a),'newsay');return false;">
    点击此处答题!
    我觉得直接改成window.open('qanswer.asp?answer='+escape(茶烟琴韵书声),'newsay')就可以发给系统了,不过怎么发我不会,或者用delphi直接再请求一个页面
    WebBrowser1.Navigate('qanswer.asp?answer='+escape(茶烟琴韵书声),'newsay')
    因为我不懂,所以不知道这样行不行