delphi一些不是很重要的技巧
2011-08-07 00:29
190 查看
delphi一些不是很重要的技巧
1.把整型指针转换字符指针var a:^integer; 是声明一個integer的指针 而不是一個integer
差別在var b: integer ; delphi會幫你準備一個位置來存這個數字,並且有一個指针來指到這個數字
希望下面的sample能將我的意思更容易理解
var a:^integer; //声明一個數字型態的指针A, 這種寫法編譯器沒有自動幫你生一塊實體儲存數字的記憶體
b:integer; //声明一個數字(取得一個實體儲存數字的变量 & 這塊变量體的指针B)
begin
b := 3; // 將3存到實體儲存數字的記憶體中
a := @b; //將A = 3的指標针也就是B)
ShowMessage(IntToStr( b));
a^ := 10; // 將a指向的記憶體,也就是原來B所指的實體儲存數字的記憶體內容改成10
ShowMessage( IntToStr(a^));
ShowMessage(IntToStr( b)); //當然B也就變成10
我认为最好还是不要把一个整型指针转换成字符串指针,这样会引起内存混乱!
2. 集合和枚举有什么区别,什么时候使用集合,何时使用枚举?
枚举类型里面的值都是自己定义的,一旦定义之后他们之间就有了一种顺序关系
type
Season= (spring, summer, autumn, winter );
上面的season类型的值:spring\summer\autumn\ winter 默认有一个顺序关系,分别是0、1、2、3,当然也可以自己给他指定顺序,例如
type
Season=(spring=3,summer=6,autumn=25, winter);
此时顺序就是后面的值,而winter默认是26。在同一个program中同一个值不能被定义到两个不同的每局类型中。
----------------------------
集合就简单的多了
type setEx=set of boolean;
就表示一个boolean类型的集合,取值只能在True和False之间选区。
一个set可以在使用过程中增加或者删除变量
include
exclude
来操作...
多选一 用枚举
可以选多个 用集合
3.继承(inherited)的用法?
是指一个新的对象能够从父对象中获取属性和方法,这种概念能用来建立vcl这样的多层次的对象,首先建立通用对象,然后创建这些通用对象的有专用功能的字对象。继承的好处是能共享代码。
多继承是指一个对象能继承两个不同的对象,并且包含有两个父对象的所有数据和代码,object pascal采用两种方法解决:在一个类中包含其它的类;使用接口。
继承的方法必须是虚拟或是动态方法。在4p中,private中的方法和属性不能被派生类继承,例如;
type
TQueryThread = class(TThread)
protect
Constructor Create;
public
procedure Execute;override;//覆盖基类的方法;此方法在基础类中的声明为virtual类型;
end;
constructor TQueryThread.Create;
begin
FreeOnTerminate := True;
inherited Create(False);//继承基础类中的方法;
end;
procedure TQueryThread.Execute;
begin
do something;
end;
static 表示是静态方法;静态方法是方法的缺省类型,不能被覆盖;
virtual 表示是虚拟方法;
dynamic 表示是动态方法;
这两类方法的共同点是都可以被覆盖(override),区别仅在于运行时调用方法时的派发机
制,virtual方法为执行速度做了优化,而dynamic方法则为代码大小做了优化;经常被覆盖的
方法应该定义为virtual方法;
message 表示是消息处理方法;在关键字message后面的值指明了这个方法要响应的消息;
用消息处理方法来响应Windows的消息,这样就不用直接来调用它;
override 表示是覆盖方法;要求祖先类中必须有该方法的定义,并且参数的顺序和类型
及返值的类型必须匹配;用于扩展祖先类中的该方法而不是取代它(如不调用祖先类中的该方
法则等同于取代);
overload 表示是重载方法;用于一个类中有许多同名的方法带着不同的参数表的情形;
(属性的读写方法不能被重载);
abstract 表示是抽象方法;是没有实现的方法,并且必须是virtual或dynamic方法,即
在abstract前面必须有virtual或dynamic关键字,其实现部分在派生类中;如
procedure DoSomething; virtual; abstract;
reintroduce表示是重新声明的方法;用于方法的名称与祖先类中的某个方法名称相同的情形;
virtual 和 dynamic定义的虚函数,都是为了子类override用的,
只不过它们的实现不一样
vitrual 占用的空间大点,但速度快些。dynamci正好相反
相关文章推荐
- DELPHI的一些开发技巧和方法(一)
- DELPHI的一些开发技巧和方法(二)
- delphi的一些常用操作技巧,持续更新中。。。
- Delphi总结使用TStrings的一些技巧
- Delphi开发的一些技巧
- 分析Delphi程序的一些技巧
- Delphi的一些技巧
- Delphi开发的一些技巧
- git学习笔记2-一些很重要又很初级的命令和技巧(霜之小刀)
- Ado.net DataSet 与delphi的一些技巧(web service)
- DELPHI中调用DLL的方法和一些注意事项和技巧
- Delphi--TStrings的一些技巧
- 数据恢复等一些电脑技巧 不是复制粘贴那些。。。
- delphi的一些操作技巧
- [Delphi]Delphi开发的一些技巧
- DELPHI中调用DLL的方法和一些注意事项和技巧
- 用DELPHI实现的一些国内黑客程序技巧
- DELPHI一些常用的技巧
- delphi, Mapobjects(mo)开发一些技巧,图形对象类型转换
- Delphi总结使用TStrings的一些技巧