string类型可以看成一个Char数组,但是这个数组的下标是从1开始的。
动态数组的下标默认是从0开始的,而自定义数组的下标是用户自定义的。
如:
var
arr : array of Integer; -- 动态数组
arr1 : array[4..100] of Integer; --自定义数组(下标也可能是字符等其它有序类型)
begin
SetLength(arr, 10);
ShowMessage(IntToStr(Low(arr))); --结果为0
ShowMessage(IntToStr(Low(arr1))); --结果为4
end;
const声明参数值不可改变
var声明的参数,传进来的不是该参数的值,而是该参数的引用,故该参数值改变了就是原变量的值改变了
Length(数组名):求数组长度
raise Exception.Create('Error Message'):抛出错误,并显示错误信息
Low(arr):求数组下标的最小值;High(arr):求数组下标的最大值
Inc(P):令P自增加1, P要是有序数据类型;Dec(P):自减,类似Inc
Delete(s, startIndex, count):从s的第startIndex个字符开始,删除count个字符
Nil:空指针。
A Div B:A / B,取整(A、B都是整型)
A Mod B:A % B,求余
Not:单目运算,逻辑或按位取反
xor:逻辑异或,按位异或:相同为0,不同为1
And:逻辑与,按位与:全部为1才为1,否则为0
or:逻辑或,按位或:只要有一个1就为1,否则为0
多条件要用()包裹各个条件
With语句是一种简写方式,见下例:
With label1, edit1 Do --不推荐在with中使用多个控件,容易出现歧义
begin
Caption := 'label'; --edit1没有caption属性,故是对label1进行的赋值
font.color := clRed; --就近原则,edit1和lable1都有font属性,因为edit最后定义,离这句代码最近,所以是对edit1的赋值
end
if ... then ... else ...; 算一行代码,故在else前不许加';'
Case 表达式 Of --表达式的值必须是有序数据类型
值1: ....; --用begin end包裹多句代码
值2:....;
值3..值4:...; --在值3到4的范围内触发
end;
delphi中的函数和过程只有返回值不同(函数有返回值,过程没有返回值),其它都相同
delphi中,不建议在公共函数或过程中引用某个对象的子组件。
--声明属于某个对象(设为Object)的函数或方法
Procedure Object.ProcName();
delphi中写完函数或过程后,光标点击到代码体内,按下 Ctrl + Shift + C,会自动生成该函数和过程的声明。
函数中默认有一个变量Result,它用于返回函数的返回值。
不推荐用函数名来返回结果
Delphi中默认是值传递,引用传递要用var声明。
值传递和参数传递:值传递指只将参数的值传进来,不改变原参数的值;引用传递是将该参数的引用传递进来,会改变原参数的值。
表达式(如常量表达式、a-6等)可以做为函数或过程的值传递参数,但不可以作为引用参数传递进来。
--小数转整数
Round(float); --对小数部分四舍五入
trunc(float); --直接截取整数部分
--格式化
FormatFloat(FormatStr, float); --格式化字符串中0代表有数就填。没数就用0代替;#代表有数就填,没有就不填;如果有一个或多个',',代表千位分隔符,整数部分每有三位就会自动加一个
Format(formatStr, ParamList); --带占位符的格式化
--例:
FormatFloat('#,0.00', 1234567.89111); --结果为1,234,567.89
Format('我有%f 元, 可以买 %d 本书', [200.35, 5]); --结果为 我有200.35 元, 可以买 5 本书
--弹出输入框:inputQuery和InputBox
function InputQuery(const ACaption, APrompt: string; var Value: string): Boolean;
--InputQuery返回值为是否点了OK 输入的字符串放在了变量Value中
function InputBox(const ACaption, APrompt, ADefault: string): string;
--inputBox返回值是字符串,也就是输入的字符串
--尝试将字符串s转换成Integer类型的数据,如果转换成功,则将转换后的整数值赋给value变量,并返回True;否则value变量的值不变,返回false。
tryStrToInt(Const s: string; out Value: Integer);