1。pbyte=^byte;
b:=pbyte(L)^;
上面两句中的^个符号是什么意思??
2。FSortArray:=@SortArray; 这里的@是什么意思??
3。在delphi 中[]和()有什么区别,分别有什么用??哪个表示集合的。
4。overload,override有什么区别??
b:=pbyte(L)^;
上面两句中的^个符号是什么意思??
2。FSortArray:=@SortArray; 这里的@是什么意思??
3。在delphi 中[]和()有什么区别,分别有什么用??哪个表示集合的。
4。overload,override有什么区别??
解决方案 »
- 书上有个地方看不懂,高手来解释一下
- 线程调试遇到麻烦。请各位帮忙解决。我给100分
- CORBA程序问题,高分相送!
- 日期问题在输入时的正确性、完整性检验
- 多线程如何对一个函数进行互斥访问?
- 请各位在企业(工厂)作信息化工作的GGJJ们帮忙只占用你们分钟30的时间,现在只能给100不够我会再加,UP有分
- RichEdit的字体颜色设置。
- 怎么搞的?Borland Database 问题---我的机器上可以运行,在别的机器上出错(error $2180) 如何解决?给分。
- 谁能告诉我,关于数据库有什么好书,thanks a lot!(mm)
- 寻求QuickReport3以上版本 for Delphi3 的源代码或者安装包?
- 请问高手,关于代理的问题(100分)
- delphi程序中用了RainXp和FlatStyle控件,但在别人的机子上不能运行,是什么原因如何解决?
1。pbyte=^byte; //定义类型pbyte为一个byte类型的指针
b:=pbyte(L)^;//强制类型转换l为pbyte类型后取l所指向地址的值
上面两句中的^个符号是什么意思??
2。FSortArray:=@SortArray; 这里的@是什么意思??//把sortarray的起始地址赋给指针
// 变量fsortarray
3。在delphi 中[]和()有什么区别,分别有什么用??哪个表示集合的。
//[]表示下标,例如array[1][4],array[1..4],枚举用(),参数用()
4。overload,override有什么区别??//overload没见过,override是重载函数定义和使用
3。在delphi 中[]和()有什么区别,
//这个我不说了,晕!
4。overload,override有什么区别??重载方法
可以使用指示字overload对方法进行再声明。这时,如果再声明的方法与其祖先具有不同的参数标记,那么该方法重载了继承得到的方法而没有对其隐藏。调用后裔类中的方法将会根据调用时给出的参数决定激活哪一个方法。如果要重载一个虚拟方法,那么在后裔类中对其再声明时应使用reintroduce指示字。例如,type T1 = class(TObject) procedure Test(I: Integer); overload; virtual; end; T2 = class(T1) procedure Test(S: string); reintroduce; overload; end; ... SomeObject := T2.Create; SomeObject.Test('Hello!'); // 调用 T2.Test SomeObject.Test(7); // 调用 T1.Test在同一个类中不能公布(publish)多个重载的同名方法。运行时信息(RTTI)的维持要求每个公布(published)成员具有唯一的名称。type TSomeClass = class published function Func(P: Integer): Integer; function Func(P: Boolean): Integer // 错误 ...被说明符read或write限定、服务于属性的方法不能被重载。覆盖和隐藏
如果一个方法声明指定的方法标识符与继承得到的方法具有相同的名称但未包括指示字override,那么新的声明只是隐藏(hides)了继承得到的方法而没有覆盖它。在后裔类中,这两个方法都是存在的,这里的方法名称其范围是静态的。例如:type T1 = class(TObject) procedure Act; virtual; end; T2 = class(T1) procedure Act; //Act被再声明,但没有被覆盖(overridden) end;var SomeObject: T1;begin SomeObject := T2.Create; SomeObject.Act; //调用T1.Actend;
集合是指相同序数类型值的集合。集合中的值没有固定的顺序,同一个值在一个集合中最多出现一次(即集合中的元素互不相同的)。The range of a set type is the power set of a specific ordinal type, called the base type; that is, the possible values of the set type are all the subsets of the base type, including the empty set. The base type can have no more than 256 possible values, and their ordinalities must fall between 0 and 255. Any construction of the form集合类型的范围是指定序数类型的幂集(见当前页中编者注),这里所说的“指定序数类型”叫做集合的基类型(base type)。也就是说,集合类型所有可能的值都是基类型的子集,包括空集。基类型不能含有多余256个可能的值,基类型的序号也必需在0到255之间。任何具有如下形式set of baseType(这里的基类型baseType是一个适当的序数类型),都标识了一个集合类型。由于基类型的尺寸局限,集合类型通常用子界类型来定义。例如,声明type TSomeInts = 1..250; TIntSet = set of TSomeInts;创建了一个叫做TintSet的集合类型,集合元素的取值范围是1到250。也可以如下声明,达到相同效果type TIntSet = set of 1..250; 对于上面给出的声明,可以有如下代码:var Set1, Set2: TIntSet;//声明集合变量 ...Set1 := [1, 3, 5, 7, 9];//向集合赋值Set2 := [2, 4, 6, 8, 10]//向集合赋值 也可以在变量声明中直接使用set of ... 结构:var MySet: set of 'a'..'z'; ...MySet := ['a','b','c']; 下面是其他集合类型的范例set of Byteset of (Club, Diamond, Heart, Spade)set of Char; in运算符用于测试集合成员:if 'a' in MySet then ... { 相应的处理 } ; 所有的集合都能保存空集,用 [] 表示(一对方括号)。
如 if (adodataset1.state in [dsInsert, dsEdit]) then
4。overload表示重载,若干函数、过程使用相同的名称,但在参数名称、类型上相互区别
override覆盖,子类重新定义父类的函数、过程
后者在出现类的继承关系时才会出现。
重载
function add(x,y: integer): integer; overload; // 实现两个整数相加
function add(x,y: string): string; overload; // 实现字符串连接
这样就避免了为取不同名称所带来的麻烦,更方便