delphi 日常注意点
TfrmFAModule = class;
TfrmFAModuleClass = class of TfrmFAModule; 关于此申明的作用,可以传递一个类参数,比如
function ShowModule(AModuleClass: TfrmFAModuleClass;AnModuleNo: integer; const AsName: string = ‘‘;
const bAutoCreate: boolean = True; const bBrintToFront: boolean = True): TfrmFAModule; //显示界面
二:关于try
try 。。。。finally 。。。end; 语句 对象在try语句之前创建,不然finally中的对象释放可能不存在。
三:直接操作数据库的sql不要在界面单元写,而要在obj中写
四:关于过程指针
//指向显示明细模块过程的指针。Params 传入参数 此函数作用:在基类中申明与执行过程,在子类中给定指针的值,有利于基类的设计统一
PShowDetail: procedure (Sender: TObject; Params: TPKValueList);
PShowDetail := LoadLSSalesMan; //给指针过程赋值
if Assigned(PShowDetail) then //执行指针过程
begin
ValueList := TPKValueList.Create;
try
FetchParamsForShowDetail(ValueList);
PShowDetail(self, ValueList);
finally
ValueList.Free;
end;
end;
五:关于方法继承
父类方法有abstract标识,子类没声明且没实现,,如果子类的子类要实例化的话,则子类的子类必须声明以及实现该方法
如果子类与父类指向同一个对象,当释放掉父类对象后,不能再释放掉子类对象
JSON之SuperObject万一博客:
类方法作用:不用创建对象就能用,避免内存泄露
delphi关闭应用程序function KillTask(ExeFileName:string):boolean;
const
PROCESS_TERMINATE = $0001;
var
ContinueLoop: BOOLean;
FSnapshotHandle: THandle;
FProcessEntry32: TProcessEntry32;
begin
Result := False;
FSnapshotHandle := CreateToolhelp32Snapshot(TH32CS_SNAPPROCESS, 0); 通过获取进程信息为指定的进程、进程使用的堆[HEAP]、模块[MODULE]、线程建立一个快照。0:表示当前进程
FProcessEntry32.dwSize := SizeOf(FProcessEntry32);
ContinueLoop := Process32First(FSnapshotHandle, FProcessEntry32);
while Integer(ContinueLoop) <> 0 do
begin
if ((UpperCase(ExtractFileName(FProcessEntry32.szExeFile)) =UpperCase(ExeFileName)) or (UpperCase(FProcessEntry32.szExeFile) = UpperCase(ExeFileName))) then
Result := TerminateProcess(
OpenProcess(PROCESS_TERMINATE,
BOOL(0),
FProcessEntry32.th32ProcessID),
0);
ContinueLoop := Process32Next(FSnapshotHandle, FProcessEntry32); //进程的依次循环来找正确的进程关闭
end;
CloseHandle(FSnapshotHandle);
end;
异常问题数据类型转型时可能要抛出异常,比如字符串转型成浮点型等,必须要抛出异常
截取字符串 Trunc在有必要的情况下也要抛出异常
对于异常处理要特别注意
杂录initialization ------ 在单元中放在文件结尾前,包含用来初始化单元的代码,它在主程序运行前运行并且只运行一次。
finalization ------ 在单元中放在 initialization 和 end. 之间,包含了单元退出时的代码。在程序退出时运行并且只运行一次。
前台程序尽量用FreeAndNil来释放资源
前台InitDevice中关于互斥量与信号量运用理解互斥量与信号量
动作\系统
Win32
Linyx
Solaris
创建
CreateMutex
pthread_mutex_init
mutex_init
加锁
WaitForSingleObject
pthread_mutex_lock
mutex_lock
解锁
ReleaseMutex
pthread_mutex_unlock
mutex_unlock
销毁
CloseHandle
pthread_mutex_destroy
mutex_destroy
摘要:
1. 互斥量用于线程的互斥,信号线用于线程的同步。
这是互斥量和信号量的根本区别,也就是互斥和同步之间的区别。
温馨提示: 本文由Jm博客推荐,转载请保留链接: https://www.jmwww.net/file/68232.html