第二章编程环境 2.1CB界面 2.2Win版 Hello world 2.2.1一个空白工程 2.2.2最简单的 Hello World工程 2.3D0S版 Hello world 2.3.1一个空白的控制台工程 2.3.2用控制台输出“ Hello world” 2.4简单程序调试 2.4.1编译期错误与运行期错误 2.4.2学会使用帮助文档 在第一章,我们从一较高的高度上谈论一一是的,我们只是在“谈论”计算机语言。直 到最后一节,我们才相对具体地说到了编程工具。这就好比是和一个初识的女孩子海阔天 空地聊了一番国际国内形势后,临走时我们问了她一句:“你有e-mail吗?” 2.1CB界面 启动 Borland c++ Builder后,你会发现它的窗口和我们常见的一体化窗口的应用程序 有所不同,CB的各子窗口并没有集成在一个主应用窗口中,而是分散为独立的子窗口
第二章 编程环境 2.1 CB 界面 2.2 Win 版 Hello World 2.2.1 一个空白工程 2.2.2 最简单的 Hello World 工程 2.3 DOS 版 Hello World 2.3.1 一个空白的控制台工程 2.3.2 用控制台输出“Hello world” 2.4 简单程序调试 2.4.1 编译期错误与运行期错误 2.4.2 学会使用帮助文档 在第一章,我们从一较高的高度上谈论——是的,我们只是在“谈论”计算机语言。直 到最后一节,我们才相对具体地说到了编程工具。这就好比是和一个初识的女孩子海阔天 空地聊了一番国际国内形势后,临走时我们问了她一句:“你有 e-mail 吗?” 2.1 CB 界面 启动 Borland C++ Builder 后,你会发现它的窗口和我们常见的一体化窗口的应用程序 有所不同,CB 的各子窗口并没有集成在一个主应用窗口中,而是分散为独立的子窗口
File Edit Search View Project Run c ,日胡些|这区‖,mmWm2|则m|D3A图D 13合口川回A成国画反a 目U Object Inspector Form1: TForm1 Unit 1.cpp Properties Events 2 Action 并1 nc lude aNone 团 Ancho [akLeft, akTopl AutoScroll AutoSize BiDiMode bdLeft t oRigh [biSystemMenu, bik Border Style bs sizes Borderwidth Formal ClientHeight Clientwidth hidde (笔者的桌面分辨率为102*728,但为了不让图的尺寸太大,我特意将各窗口拉得很小) 如果你打开CB后出现在界面和上图有所不同,可以通过File菜单,再选 New Application, 建一新的工程,则上图标注的2到4的窗口应该出现。如果仍然有缺,请用鼠标点上图的 标注为1所示窗口的标题栏(以确保为活动状态),然后反复按F11,F12,可以在以上窗 口来回切换 下面我们来了解这四个窗口: 标注为1的窗口:这是我们比较熟悉的应用程序主窗口,虽然它看上去是一个长条,不 过其上有主菜单( Mainmenu),工具栏( Toolbar),和别的软件一样。不一样的是这一“长条” 的右下部分的多页式工具条。事实上它并不是寻常意义上的工具条,因为其上的每一工具 按钮并不提供执行某一命令的功能。我们称它为控件栏。控件是CB提供的了先进的编程思 想的体现之一,本章后面我们会初步学习如何使用控件。 标注为2的窗口:相信你一眼就可以看出这是一个文件编辑的窗口。我们称之为代码编 辑窗口,或简称为代码窗口。由名及义,这是我们写程序代码的地方 标注为3的窗口称它为C++ Builder软件的窗口并不妥当。事实上,它是我们自已要写 的软件的窗口。 Windows操作系统的应用软件,譬如Word2000,譬如 WPS Office,或者简单
(笔者的桌面分辨率为 1024*728,但为了不让图的尺寸太大,我特意将各窗口拉得很小) 如果你打开CB 后出现在界面和上图有所不同,可以通过File 菜单,再选New Application, 建一新的工程,则上图标注的 2 到 4 的窗口应该出现。如果仍然有缺,请用鼠标点上图的 标注为 1 所示窗口的标题栏(以确保为活动状态),然后反复按 F11,F12,可以在以上窗 口来回切换。 下面我们来了解这四个窗口: 标注为 1 的窗口:这是我们比较熟悉的应用程序主窗口,虽然它看上去是一个长条,不 过其上有主菜单(MainMenu),工具栏(Toolbar),和别的软件一样。不一样的是这一“长条” 的右下部分的多页式工具条。事实上它并不是寻常意义上的工具条,因为其上的每一工具 按钮并不提供执行某一命令的功能。我们称它为控件栏。控件是 CB 提供的了先进的编程思 想的体现之一,本章后面我们会初步学习如何使用控件。 标注为 2 的窗口:相信你一眼就可以看出这是一个文件编辑的窗口。我们称之为代码编 辑窗口,或简称为代码窗口。由名及义,这是我们写程序代码的地方。 标注为 3 的窗口称它为 C++ Builder 软件的窗口并不妥当。事实上,它是我们自已要写 的软件的窗口。Windows 操作系统的应用软件,譬如 Word2000,譬如 WPS Office,或者简单
Form1: TForm1 PropertiesEvents BiD iMode bdLeftT oRight I Borderlcons [biSystemMenu, biMinimia siZeable 如画笔,记事本,总是会有一或多个窗口。这是 Windows应用软件的 典型特征( Windows操作系统也因此称为 Windows)。尽管也可以写没 有窗口的应用程序,但大多数情况下我们的程序至少需要一个窗口,所以CB在创建新工程 时,总是默认为我们生成一个主窗口,这就是标注为3的窗口一一在程序运行前,我们称 它为设计表单(Form),在程序运行之后,它就是我们程序的窗口。我们的程序需要有几个 不同的窗口,就可在设计期间生成同样多个类似标注为3的设计表单。 (我对”表单”这个词总是无法产生具体的概念,可是不仅C++ Builder,还有 De lphi CB的“姐姐”,以及 Visual basic—一微软的得意之作,包括.net计划中的C#等快速 应用程序设计系统,都使用Form这个词来称呼设计期间的窗口。所以我还是统一口径叫表 单。但不管怎样,如果你在我的课程中偶尔发现设计窗口这样的说法,不用猜测,你尽管 认定我就是在说表单。一个原则:只在设计期间,我们才有可能称它为表单,当窗口运行 了,那就是窗口了,我们从不叫一个运行着的窗口为表单) 标注为4的窗口,标题写着“ Object Inspector”直译对象检视器。事实上CB在调试 程序时还有一个“ Debug Inspector”,我倒觉得让后者叫前者的名字更合适。因为这里 0 oJec t,也就对象,可不是我们以前说过面向对象的对象。它其实是用来查看,设置当前 放在设计表单上的某个/些控件的属性值和事件值的工具。后面我们会用到它,控件,也称 组件一一但有些CB的书区分这两者,认为前者是后者的某一特定子集一一就是窗口1右下 的控件栏上的控件,至于控件的属性,稍后我们使用时,你就会了解。为了直观,我决定 称4号窗口为控件属性检视器,或者属性检视器,或者属性窗口,总之离不了属性二字 属性检视器有两页: Properties(属性)和 Events(事件)。 参照左边的图,这里顺便再统一一下口径,如图中 Properties和 Events;我们称它为多 页( Properties为第一页, Events为第二页)。 关于分散窗口(苹果机早期的应用程序风格)的得失,我们不想在此讨论。需要说明的 是,CB的的各常用子窗口都提供 Dockable,因此如果你喜欢集成式的窗口,大可通过鼠标 拖拖放放来定制自己的集成窗口。 Dockable是指:拖动窗口A,当经由窗口B的某一边缘地带时,窗口A可以成为窗口B 上的子窗口而停靠在窗口B的某一角落。在CB里,不仅角落可以停靠,当位置为窗口B的 中心时,窗口B还能以多页的方式加入窗口B
如画笔,记事本,总是会有一或多个窗口。这是 Windows 应用软件的 典型特征(Windows 操作系统也因此称为 Windows)。尽管也可以写没 有窗口的应用程序,但大多数情况下我们的程序至少需要一个窗口,所以 CB 在创建新工程 时,总是默认为我们生成一个主窗口,这就是标注为 3 的窗口——在程序运行前,我们称 它为设计表单(Form),在程序运行之后,它就是我们程序的窗口。我们的程序需要有几个 不同的窗口,就可在设计期间生成同样多个类似标注为 3 的设计表单。 (我对”表单”这个词总是无法产生具体的概念,可是不仅 C++ Builder,还有 Delphi —CB 的“姐姐”,以及 Visual Basic——微软的得意之作,包括.net 计划中的 C#等快速 应用程序设计系统,都使用 Form 这个词来称呼设计期间的窗口。所以我还是统一口径叫表 单。但不管怎样,如果你在我的课程中偶尔发现设计窗口这样的说法,不用猜测,你尽管 认定我就是在说表单。一个原则:只在设计期间,我们才有可能称它为表单,当窗口运行 了,那就是窗口了,我们从不叫一个运行着的窗口为表单)。 标注为 4 的窗口,标题写着“Object Inspector”直译对象检视器。事实上 CB 在调试 程序时还有一个“Debug Inspector”,我倒觉得让后者叫前者的名字更合适。因为这里 Object,也就对象,可不是我们以前说过面向对象的对象。它其实是用来查看,设置当前 放在设计表单上的某个/些控件的属性值和事件值的工具。后面我们会用到它,控件,也称 组件——但有些 CB 的书区分这两者,认为前者是后者的某一特定子集——就是窗口 1 右下 的控件栏上的控件,至于控件的属性,稍后我们使用时,你就会了解。为了直观,我决定 称 4 号窗口为控件属性检视器,或者属性检视器,或者属性窗口,总之离不了属性二字。 属性检视器有两页:Properties(属性)和 Events(事件)。 参照左边的图,这里顺便再统一一下口径,如图中 Properties 和 Events;我们称它为多 页(Properties 为第一页,Events 为第二页)。 关于分散窗口(苹果机早期的应用程序风格)的得失,我们不想在此讨论。需要说明的 是,CB 的的各常用子窗口都提供 Dockable,因此如果你喜欢集成式的窗口,大可通过鼠标 拖拖放放来定制自已的集成窗口。 Dockable 是指:拖动窗口 A,当经由窗口 B 的某一边缘地带时,窗口 A 可以成为窗口 B 上的子窗口而停靠在窗口 B 的某一角落。在 CB 里,不仅角落可以停靠,当位置为窗口 B 的 中心时,窗口 B 还能以多页的方式加入窗口 B
大多数软件或许会在退出时保存住最后的窗口位置大小等设置,CB则提供你随时保存, 调用各套桌面设置,比如编写代码时的桌面,调试时的桌面等。 以下就是笔者常用的,用于编写代码时CB桌面设置之一,它被我存盘为“ Poweredi tdsk CC++Builder 5-ProjectI 口中,归已的购?‖5A如mWm25m|DD5Cm Unit1 ClassExplorer Project Manager I Path 鲜 include 并# pragma hdrstop 唱 ProjectGroup1 d \borland\cE Project1.exe d\borland cE 并 nc lude"Unit1.h pragma package (smart init #pragma resource "*. dfmo Form1 *Form1 fastcall TFormI:: TFormI (COmponent owner) TForm(owner d:\borland\CBuilde 5\Projects\ProjectGroup1. 4 To-Do List-Project1 Messages 13: 2E Modified Insert 这套桌面集成了类专家( ClassExplorer),工程管理( Pro ject Manager)及消息窗口,任 务列表(To- Do List)等窗口于代码编辑窗口内。 鉴于如果各位的桌面设置不统一会造成课程讲解上的一些困难,另外还有一个不是理由 的理由:CB有关桌面的设置有烦人的BUG,所以我们的课程使用CB默认的桌面设置,也是 文前标有1、2、3、4的那张图中所示的窗口位置。 2.2Win版Hel10, World
大多数软件或许会在退出时保存住最后的窗口位置大小等设置,CB 则提供你随时保存, 调用各套桌面设置,比如编写代码时的桌面,调试时的桌面等。 以下就是笔者常用的,用于编写代码时 CB 桌面设置之一,它被我存盘为“PowerEditDsk”: 这套桌面集成了类专家(ClassExplorer),工程管理(Project Manager)及消息窗口,任 务列表(To-Do List)等窗口于代码编辑窗口内。 鉴于如果各位的桌面设置不统一会造成课程讲解上的一些困难,另外还有一个不是理由 的理由:CB 有关桌面的设置有烦人的 BUG,所以我们的课程使用 CB 默认的桌面设置,也是 文前标有 1、2、3、4 的那张图中所示的窗口位置。 2.2 Win 版 Hello,World
编写自已的第一个程序,并且用字幕打出“世界你好!”一一这是“很早很早”以前 本C程序教材的作者的发明一一后来据说成了经典……不过很多人说这太过时了。不管怎 样,我认为这作为我们初次使用CB的教学例子仍然很合适。 很多人可能感到有点突然。当CB慢吞吞启动后,一堆界面元素无论如何都让人感到这 不是一个轻量级的人物:我们什么编程基础都还没有掌握,能驾驭好这个巨人吗?其实这 就是CB的强大所在:具有高度的弹性,你可以用它编写很小的程序,也可以集合数十个程 序员,用它编写大型软件。 牛刀小试开始 2.21一个空白工程 这是 Windows的天下,尽管在《白话C++》的学习中, Windows编程并非重点,但我们 还是选择了 Windows作为我们认识CB的起点。 从主菜单中选择 File New Application File Edit Search viev 口Rew 更 ew Application (约定:在谈菜单命令时我们约定用这种格式:Fie/ New Application表示如上图的 实际操作。) 执行 New Application之后,CB为我们新一个空白工程。所谓空白工程是指:绝大都 数 Windows程序所共同拥有的,必须的一个框架。再说白点,就是你每写一个新程序,都 需要的一堆完全一样的代码,也就是说在多数情况,这是一步机械的工作。既然是“机械” 的工作,当然由机器来完成最合适 很多年前,笔者VC和BC都未流行的时,做了一个月“机械工”后,和许多那时的程序 员一样,笔者很快尝试自已对这部分的代码进行封装。后来笔者又建议单位购买一套中国 人写的窗口对象类库:再后来,笔者可始用BC,用VC,至今天,对于大家能有机会直接使 用堪称最好封装的VCL学习编程,笔者能说的一句话就是:珍惜你的机会,珍惜你的20元 空白工程带有一个名为“Form1”的表单(上一节图中标有“3”的窗口)。这就是程序 运行时的主窗口。验证一下你就能明白
编写自已的第一个程序,并且用字幕打出“世界你好!”——这是“很早很早”以前一 本 C 程序教材的作者的发明——后来据说成了经典……不过很多人说这太过时了。不管怎 样,我认为这作为我们初次使用 CB 的教学例子仍然很合适。 很多人可能感到有点突然。当 CB 慢吞吞启动后,一堆界面元素无论如何都让人感到这 不是一个轻量级的人物;我们什么编程基础都还没有掌握,能驾驭好这个巨人吗?其实这 就是 CB 的强大所在:具有高度的弹性,你可以用它编写很小的程序,也可以集合数十个程 序员,用它编写大型软件。 牛刀小试开始。 2.2.1 一个空白工程 这是 Windows 的天下,尽管在《白话 C++》的学习中,Windows 编程并非重点,但我们 还是选择了 Windows 作为我们认识 CB 的起点。 从主菜单中选择 File | New Application (约定:在谈菜单命令时我们约定用这种格式:File | New Application 表示如上图的 实际操作。) 执行 New Application 之后,CB 为我们新一个空白工程。所谓空白工程是指:绝大都 数 Windows 程序所共同拥有的,必须的一个框架。再说白点,就是你每写一个新程序,都 需要的一堆完全一样的代码,也就是说在多数情况,这是一步机械的工作。既然是“机械” 的工作,当然由机器来完成最合适。 很多年前,笔者 VC 和 BC 都未流行的时,做了一个月“机械工”后,和许多那时的程序 员一样,笔者很快尝试自已对这部分的代码进行封装。后来笔者又建议单位购买一套中国 人写的窗口对象类库;再后来,笔者可始用 BC,用 VC,至今天,对于大家能有机会直接使 用堪称最好封装的 VCL 学习编程,笔者能说的一句话就是:珍惜你的机会,珍惜你的 20 元 钱。 空白工程带有一个名为“Form1”的表单(上一节图中标有“3”的窗口)。这就是程序 运行时的主窗口。验证一下你就能明白:
请选菜单:Run|Run或者按F9键。空白工程一一当然也是一个完整的工程—一被编 译成程序,最后自动运行,出现一个标题为“Form1”的窗口。怎么和设计时的那个表单 模一样呢?当然,所见即所得嘛。不一样的地方也有一一设计表单上有一些用于定位的小 点,而运行后的窗口没有这些。 ×[rmx 左图为表单,右图为窗口,表单(Form)指设计时的窗口,窗口( Window)指运行时的表 关闭该窗口,继续我们的 Hello, World的工作。 2.2.2最简单的He11oWor1d工程 请从C++ Builder的主窗口(上一节中标有“1”的窗口)右下部的控件栏中找到如图 所示的 Label控件,同时记住: Label控件在 Standard页中。点击代表该控件的图标按 Standard 回旷AF 钮 (图中画有字母“A”的图标按钮即为 Label,这个控件用来显示一些简单的文字内容。) 鼠标摁下该按钮后(按下后按钮的形状如上图),将鼠标挪取表单Form1上随便位置点左 键,一个 Label控件被放在表单上 6rr-=
请选菜单:Run | Run 或者按 F9 键。空白工程——当然也是一个完整的工程——被编 译成程序,最后自动运行,出现一个标题为“Form1”的窗口。怎么和设计时的那个表单一 模一样呢?当然,所见即所得嘛。不一样的地方也有——设计表单上有一些用于定位的小 点,而运行后的窗口没有这些。 左图为表单,右图为窗口,表单(Form)指设计时的窗口,窗口(Window)指运行时的表 单。 关闭该窗口,继续我们的 Hello,World 的工作。 2.2.2 最简单的 Hello World 工程 请从 C++ Builder 的主窗口(上一节中标有“1”的窗口)右下部的控件栏中找到如图 所示的 Label 控件,同时记住:Label 控件在 Standard 页中。点击代表该控件的图标按 钮: (图中画有字母“A”的图标按钮即为 Label,这个控件用来显示一些简单的文字内容。) 鼠标摁下该按钮后(按下后按钮的形状如上图),将鼠标挪取表单 Form1 上随便位置点左 键,一个 Labe1 控件被放在表单上:
用鼠标再点一下 Labe l1,确保它为如上图中的选中状态(带有八个黑点块)。我们要通 过修改属性,让它显示为“ Hello, World 主菜单: View Object Inspector(或者按F11键),出现 Object Inspector窗口, 也就是上一节中标有“4”的窗口,我们称为控件属性检视器,通过它,我们可检查并设置 当前选中的控件的属性(包括事件)。由于刚才选中了 Label(如果不是,请重复用鼠标再 点一下表单上的 Label1)。所以 Object Inspector窗口的上部应显示如下: Alignment taleftjust Anchors kLeft, ak T op] Auto Size baOde bdLeftToRight DcRtnface
用鼠标再点一下 Label1,确保它为如上图中的选中状态(带有八个黑点块)。我们要通 过修改属性,让它显示为“Hello,World”。 主菜单:View | Object Inspector (或者按 F11 键),出现 Object Inspector 窗口, 也就是上一节中标有“4”的窗口,我们称为控件属性检视器,通过它,我们可检查并设置 当前选中的控件的属性(包括事件)。 由于刚才选中了 Label(如果不是,请重复用鼠标再 点一下表单上的 Label1)。所以 Object Inspector 窗口的上部应显示如下: