B
Bahl
Unregistered / Unconfirmed
GUEST, unregistred user!
[h2] 《Delphi6从入门到精通》勘误表(上)[/h2]
任何一本书都不可能一点错误都没有,《Delphi6从入门到精通》也不例外。由于时间很紧,页数又有限制,所以我删去了一些主题。过几个月我将把它们在这里发表出来,以作为额外
的补充。
请注意,如果你下载了Delphi免费版或试用版的话,你必须重新编译CD上的所有的包,因为
付费版的单元格式与试用版的单元格式不兼容。
[h3]示例代码:[/h3]
C:/md6code文件夹:一些示例代码(大约占总数的2%)必须放在某个特定的文件夹中
才能正常工作。如果你把示例代码文件放在"C:/md6code"下的话,那么就不会出什么问题。否则
你就得手工对一些硬编码的文件名与数据库定位参考做一些修改以使其正常工作。
绝大部分的特殊的代码问题都在相关章节的勘误表中列出,如下所示:
[h3]第一章:[/h3]
20-21页:20页第7行,Code Insight页实际上是在Editor Properties对话框中中而不
是在Environment Options对话框中。相同的错误出现在21页,我在讨论Ctrl+Shift+I组合键时提
到了Block Indent 组合框。实际上它应该在Editor Properties对话框的General页中。
42页:在页面中间,默认的窗体格式是在Environment Options对话框中的Designer页设置的。
43页:第4行,命令实际上是Project -> View Source。
[h3]第四章:[/h3]
126页:在边栏的底部,MiniPack示例被错写成了MimiPack。
[h3]第五章:[/h3]
158页/RunProp示例:CD与我的文件里都遗漏了这个示例。这意味着我未能在最终的连遍中重新
编译这个程序。现在我发现代码中有严重错误。
书中所列的代码在Delphi5下工作得很好,但是它在Delphi6下却根本不能工作!原因是现在GetPropValue
函数在属性不存在的情况下将返回一个异常。这个程序的更正版使用了TypInfo 单元的IsPublishedProp函数
来获得同样的效果:
for I := 0 to ComponentCount -1 do
begin
// Delphi 6 version (slightly different from Delphi 5)
if IsPublishedProp (Components, Edit1.Text) then
begin
Value := GetPropValue (Components, Edit1.Text);
ListBox1.Items.Add (Components.Name + '.' +
Edit1.Text + ' = ' + string (Value))
end
else
ListBox1.Items.Add ('No ' + Components.Name + '.' +
Edit1.Text);
177页:第1条注释谈到了IniFile单元,实际上应为IniFiles。
[h3] 第八章:[/h3]
Actions 示例:书中的代码是正确的,可是CD中的源代码中的一行却搞错了。
将ActionCount.Enabled := Memo1.Empty Text <> '';
更正为:
ActionCount.Enabled := Memo1.Text <> '';
[h3] 第十章:[/h3]
ShowApp示例缺少项目文件。请重新建立一个项目文件。
Screen示例有一个无用的二级窗口,删除项目文件的第二个CreateForm调用。
[h3] 第十一章:[/h3]
MdArrow示例:它是MdPack包的组件部分,可是它没有被包安装,所以你打开相关的示例程序时就会出错。要使组件在设计时可用,你必须安装MdDesPk包。原因在449/450页的“注册属性类别”这一小节中作了解释。
(未完待续)