Delphi中PChar转换到string是自动进行的,没必要用StrPas
'#0'终结符:读到#0后就不会往后查看了
PChar类型可以看成一个字符数组指针,类似于C语音中的数组指针
StrPCopy(P, str):将str的内容复制给P(PChar)
StrCopy(P1, P2):把P2指向的内容复制给P1
P1 := P2;将P2的指向的地址赋值给P1
Inc(P)等于P + 1;
PChar写操作有三种方式:1,GetMem申请内存;2,指向一个用SetLength预设长度的string;3,指向一个数组
有序类型的序号:
Pred:前一个序号
Ord:自己的序号
Succ:后一个的序号
日期类型实际上是一个Double类型,意义是从1989年12月30日开始的天数。
整数部分表示天数,小数部分表示时间占一天的比值
日期类型:TDate,’2021-09-11’
时间类型:TTime, ‘23:59:59 999’
日期时间类型:TDateTime ‘2021-09-11 23:59:59 999’
获取当前时间:
Date:获取当前的日期部分。'YYYY-MM-dd'
Time:获取当前的时间部分。'hh-mm-ss zzz'
Now:获取当前的日期和时间
解码日期(Now是日期类型,其它参数为Word类型):
DecodeDate(Now, Year, Month, day)
DecodeTime(Now, Hour, Minute,second. MillionSecond)
编码日期(都是Integer类型):
EncodeDate(year, month, day);
EncodeTime(....)
IncMonth:返回日期增加一个月的日期
其它类似的Inc需要引用System.DateUtils单元
StartofYear/Month/Day..开始时间.
EndOfYear/Month/Day...结束时间(毫秒部分精确到999,但SQL中毫秒部分为997)
DateUtils中的日期函数 :
YearOf
MonthOf
DayOf
获取时间间隔:Years/Months/Days/Hours/Minutes/Seconds/MilliSecondsBetween
获取毫秒间隔是准确的。
其它的都用到了Div来计算
Trunc(Now) = DaysBetween(Now, 0)
StrToIntDef等有默认值的转换可以用try strToInt.. Except ... end;替换
Str(Num[, Width[, Decimal]]; var Str);将数值类型Num转换为String并保存到Str中。其中Width长度、Decimal精度是可选的。
Val(Str, var Num, Index;):将Str中前面的合法数值字符串转化为数值保存在Num中,如果有不合法的字符,则用Index保存第一个不合法字符的位置(第Index个)。
文件函数:
FileExists(FilePath):判断文件是否存在
DeleteFile(FilePath): 删除文件,成功则返回True
Extract函数:解析文件全路径,返回某部分(例C:Path/Hello/a.txt)
ExtractFileName(FilePath):返回文件名(含扩展名),如a.txt
ExtractExt(FilePath):返回文件扩展名(包含.
),如.txt
ExtractFilePath(FilePath):返回该文件所在文件夹路径(含/
),如C:Path/Hello/
ExtractFileDir(FilePath):返回该文件所在文件夹路径(不含/
),如C:Path/Hello
ExtractFileDrive(FilePath):返回该文件所在的驱动器盘符,如C
ChangeFileExt(FilePath):返回修改扩展名后的文件名(没有修改文件实体)
ReNameFile(FilePath):修改文件的扩展名
例: ReNameFile(FilePath, ChangeFileExt(FilePath, ‘.Doc’));
设有一个指针P指向一个对象O,P.Free只是将O释放了,但P依旧指向O原本所在的空间,此时P成为非法指针,很容易报错。FreeAndNil(P)则是将O释放并将P重置为Nil,是安全的。
Assigned()判断变量是否为空