type TMyClass = Class procedure myProcedure; stdcall; function myFunction: string; stdcall;end; { 技巧在于通过编译指令FInstance可以被赋值,且同时FInstance又具有常量的性质不会象变量每次进入其作用域就会重新分配初值。 用变量来实现相同的功能则该变量必须被定义成全局变量,而编程守则则要求少使用全局变量。}function FindInstance(Request: Boolean = True): TMyClass;{$j+}//该编译指令功能为使常量可以被赋值 Const FInstance: TMyClass = nil;{$j-}begin if not Assigned(FInstance) then FInstance := TMyClass.Create; if not Request then FInstance := nil; Result := FInstance;end;

评论