最近上班总有一些零散的事情要处理,要负责同事们电脑的日常维护,以及一些软硬件方面的问题。所以就没有太多的时间用来读书。而且更加郁闷的是,上周末由于访问一个网站造成电脑中毒,尝试了很多方法清除都未能成功。病毒文件在安全模式下删除后重新启动又恢复了,修改注册表中的run也无效,几番修改也告失败。最终在判断方面出现错误,将系统文件误认为病毒文件删除,导致系统无法启动。最后只好ghost回去,无奈人太懒,平时ghost不及时,最终只恢复今年年初的一个ghost文件上。同时,上周所写的关于第二章的读书笔记也随着系统的恢复丢失。。。
惨痛教训:在桌面保存的文档丢失;favorite文件夹丢失;ftp地址丢失;一些程序需要重新安装。经过这次教训,让我更深刻体会到ghost文件的重要性,要常做常更新,有空就做备份。重要文件不要放到系统盘,不要放到桌面,如果放的话要注意备份Document and Setting中的相关文件。
无奈,只得将所看的部分重新翻看一遍,但是笔记却简单了不少。
第二章 Object Pascal 语言(1)
一、注解
{ramrk} or (*remark*) or //remark
二、过程和函数特征
1.Form1.show;==Form1.show();
2.重载: 要加关键字overload
Procedure hello(I : Interger); overload;
Procedure hello(S: String); overload;
Procedure hello(D:Double); overload;
3.缺省值
缺省值要放在最后,在声明时赋值。
Procedure HasDefVal(S:string; I:integer=0);
引用时,HasDefVal(‘hello’,26)or HasDefVal(‘hello’)第二种为省略了默认值I
三、数据类型
Pascal的数据类型比较多,在给过程或者函数进行参数传递的时候,实参和形参必须实同样的数据类型。
如果在调用dll或者obj等不是delphi的函数时,注意数据类型匹配(见书P23)
生存期自管理类型
除了A n s i S t r i n g以外, D e l p h i还提供了其他几种生存期自管理类型,这些类型包括:Wi d e S t r i n g、Va r i a n t、O l e Va r i a n t、i n t e r f a c e、d i s p i n t e r f a c e和动态数组。自动回收类型,使用时分配空间,离开作用域自动释放资源。
字符串:字符串的类型较多,存储空间和使用方法各有不同,使用时需注意。现在我们常用的就是String,编译器默认为就是AnsiString类型。该类型没有长度限制,同时与null结束的字符串相兼容。对于String类型也要注意存储空间的使用,如果指定了空间的大小,如str:string[8],当访问str[10]就会引起内存错误。
对于一般的应用,直接用string类型就好。
Variant类型:变量类型,使用的时候delphi会自动根据运算转换,但是如果都用Variant类型代替传统数据类型,会使程序代码加长,使其运行变慢。但在某些对数据类型要求很灵活的地方,用Variant是非常好的,也有很多针对Variant的函数可用(P37-38)
Empty or Null: 两者不同,Empty为空,而Null为非空,其值就为Null。
四、用户自定义类型
1.记录:相当于C中的Struct
Type
Myrec=record;
I: integer;
D: double;
End;
使用
Var
N:myrec;
Begin
n.i:=23;
n.d=3.5;
end;
2.集合:pascal特有的数据类型,必须是有序数、字符、枚举值
Type
TcharSet=Set of Char;
TENum=(Monday, Tuesday, Wednesday, Thursday, Friday, Saturday, Sunday);
TEnumSet=Set of TEnum;//包括了TEnum值的任何组合,就是子集
TSubrangset=set of 1..10
注意,一个集合最多只能有255个元素
使用,
Var
Charset:Tcharset;
Enumset:TEnumset;
Alphaset:set of ‘A’..’z’;
Begin
CharSet:=[‘A’..’j’,’a’,’m’];
Enumset:=[Saturday, Sunday, Monday, Tuesday, Wednesday, Thursday, Friday];
Alphaset:=[];//empty
End;
3.对象:可以当作是记录类型,只是它还包括了函数和过程
Type
TChildObject=class(TparentObject);
SomeVar: Integer;
Procedure SomeProc;
End;
4.指针:只是了内存的位置。似乎并不是在Windows程序编写中所必须的,如果是底层开发可能用处大些。以前学C的时候也重点学了指针,不过现在也都全忘了。
第二章就不像第一章那样通俗易懂了,不过也还好,毕竟是一些语法规则之类的死东西,但是很多是要你实践之后才能明白并且深刻理解的。这些语法做为编程的基础是必须掌握的,但仅仅看书是不够的,必须要能把这些语法规则放在实际的编程中加以体会,目前,我也是缺少实际演练这一项。这就使我在编程的时候很被动,常常是碰到了要用某些语法规则的时候才去看,大大降低了工作的效率