教程 - 软件 - 文章 - 论坛

::白话C++课程::

更多感受-Hello Internet

预备课程:如何将C++ Builder6的Indy网络控件升级到 9.0? 看上去很繁琐,但没办法,您必须过这一关。请学习该教程,将C++ Builder 6 的 Indy控件升级指定版本。

本节课您将通过编程,通过Internet,听到来自d2school网站的问候。其中所要用到的控件,正是升级之后的Indy控件。并且,以后本课程所用的网络控件,除非特别提及,否则都将是指升级了之后Indy控件。

第2小节:Hello Internet!

2.1 界面设计

首先,请复习前1小节有关Hello Windows(版本三)内容。 重复其界面设计(不包括代码)。同样为了区别起见,我们将用于显示“Hello……”的Label字体颜色,设置为蓝色;另外,本例中,从www.d2school.com返回的问候比较长,所以建议在将字体的大小改小一些,我用的是二号字。

接下来,在Form1上添加一个按钮/Button控件,该控件位于:

(Button 控件)

将Button1的Caption属性,设置为“第2学堂”;其字体设置为“宋体、五号字”,字符集为“CHINESE_GB2321”。

最后,到Indy控件出场的时候了。我们需一个IdHTTP的控件,该控件负责在我们按下按钮时,访问因特网/Internet上的“第2学堂”上的某个网页,该网页返回对您的问候。

(Indy Clients 页的IdHTTP控件)

最终界面设计结果如下:

(Hello Internet 界面设计结果)

选中Form1上的那个画着地球的IdHTTP1控件,在“对象检视器”内,设置其Host属性值为“www.d2school.com”(不包含引号),以下是设置结果截图:

(设置 IDHTTP1的Host属性)

2.2 代码设计

双击“第二学堂”按钮,代码编辑窗口将出现该按钮用于响应OnClick事件的函数:Button1Click。我们需要在其函数体仙,输入一行响应代码,结果为:

void __fastcall TForm1::Button1Click(TObject *Sender)
{
    this->Label1->Caption = this->IdHTTP1->Get("/hello.php?name=" + this->Edit1->Text);
}
 
 

平常我们设置某个控件的事件,需要在“对象检视器”或俗称“属性设置器”里,通过Event页来设置。不过,多数控件都有一个“默认”事件,可以通过在设计期在表单上,双击该控件就直接切换到代码编辑窗口中,该事件的函数。

这个“默认”的事件,往往就是该类型控件最常用的事件,比如按钮,其默认事件,当然就是“OnClick”,也就是“点击/按下”的事件。

2.3 设置工程包含路径

保存工程,但先不要编译,让我们检查一下,您是否已按照预备课程中所说的,这工程添加了和Indy有关的路径。 由于在编译、链接工程成为可执行文件时,需要用到Indy库包含的文件,而在预备课程里,我们将新版Indy安装在非标准的路径下,因此,此时我们需要“告知”CB,Indy被安装在哪个路径下。

选择主菜单“Project->Options”(或者:Ctrl + Shift + F11)。出现的工程设置对话框中,切换到“Directories/Conditionals”页面:

(工程设置-路径/条件页面)

点击“Include path”所在行右边的带“...”的按钮,出现对话框中,请检查所列出的路径,是否存在:

“$(BCB)\Source\indy\c6”这一行?如果不存在,通过以下图示步骤添加:

(添加Indy路径)

点击“Library path”所在行右边的带“...”的按钮,将上述工作重复一次。

再次保存工程。

2.4 编译,运行

按F9,编译……链接……(出现问题?检查代码或前述的路径设置)。

(Hello Internet 运行中……)

在编辑框中输入您的姓名,比如“南郁”,然后……等等!请确保您的电脑已经联上因特网,并且可以访问www.d2school.com,也就是我们的网站。

点击“第2学堂”按钮……又是一个激动人心的时刻……等等!快的时候不用1秒,慢的时候,可能是3~5秒。结果就会出现了。

 

如果,您的电脑装有防火墙软件,那么或许在结果出现之前,防火墙软件可能会以某种方式,询问您是否允许某某程序访问网络,请允许之。

这是我机器上的运行结果:

(来自第2学堂的问候!)

相比以前的简短Hello,这次问候可谓长矣!看,连窗口都出现滚动条了!想知道那些没有显示出来的内容是什么吗?自已动手完成吧!

 

程序原理简介:通过IdHTTP控件,我们访问了位于第2学堂网站的某个动态脚本网页:

http://www.d2school.com/hello.php),并且以您所输入的姓名做为其参数,譬如:

http://www.d2school.com/hello.php?name=张三。该脚本解析参数,得到“张三”,然后将该参数作为结果的一部分输出,并返回给我们的程序。


作业:

  1. 复习2.3节。

版权所有 谢绝复制。作者:南郁(nanyu) www.d2school.com