大佬教程收集整理的这篇文章主要介绍了Delphi应用程序配置的最佳方法是什么?,大佬教程大佬觉得挺不错的,现在分享给大家,也给大家做个参考。
目标:一种可读的配置类(如INI文件),但不必写入(并且在添加了新的配置项之后进行调整)加载和保存方法.
我想创建一个类
TMyConfiguration = class (TConfiguration) ... property ShowFlags : Boolean read FShowFlags write FShowFlags; property NumFlags : Integer read FNumFlags write FNumFlags; end;
调用TMyConfiguration.Save(继承自TConfiguration)应该创建一个文件
[Options] ShowFlags=1 NumFlags=42
问题:最好的方法是什么?
我有一个基础课
TConfiguration = class protected type TCustomSaveMethod = function (Self : TObject; P : Pointer) : String; TCustomLoadMethod = procedure (Self : TObject; const Str : String); public procedure Save (const Filename : String); procedure Load (const Filename : String); end;
Load方法看起来像这样(相应地保存方法):
procedure TConfiguration.Load (const Filename : String); const PropNotFound = '_PROP_NOT_FOUND_'; var IniFile : TiniFile; Count : Integer; List : PPropList; Typename,PropName,InputString,MethodName : String; LoadMethod : TCustomLoadMethod; begin IniFile := TiniFile.Create (FileName); try Count := GetPropList (Self.ClassInfo,tkProperties,nil) ; GetMem (List,Count * SizeOf (PPropInfo)) ; try GetPropList (Self.ClassInfo,List); for I := 0 to Count-1 do begin Typename := String (List [I]^.PropType^.Name); PropName := String (List [I]^.Name); InputString := IniFile.ReadString ('Options',PropNotFound); if (InputString = PropNotFound) then ConTinue; MethodName := 'Load' + Typename; LoadMethod := Self.MethodAddress (MethodName); if not Assigned (LoadMethod) then raise EConfigLoadError.Create ('No load method for custom type ' + TypeName); LoadMethod (Self,InputString); end; finally FreeMem (List,Count * SizeOf (PPropInfo)); end; finally FreeAndNil (IniFilE); end;
基类可以为delphi默认类型提供加载和保存方法.然后,我可以为我的应用程序创建一个配置,如下所示:
TMyConfiguration = class (TConfiguration) ... published function SaveTObject (P : Pointer) : String; procedure LoadTObject (const Str : String); published property BoolOption : Boolean read FBoolOption write FBoolOption; property ObjOption : TObject read FObjOption write FObjOption; end;
自定义保存方法的示例:
function TMyConfiguration.SaveTObject (P : Pointer) : String; var Obj : TObject; begin Obj := TObject (p); Result := Obj.ClassName; // does not make sense; only example; end;
以上是大佬教程为你收集整理的Delphi应用程序配置的最佳方法是什么?全部内容,希望文章能够帮你解决Delphi应用程序配置的最佳方法是什么?所遇到的程序开发问题。
如果觉得大佬教程网站内容还不错,欢迎将大佬教程推荐给程序员好友。
本图文内容来源于网友网络收集整理提供,作为学习参考使用,版权属于原作者。
如您有任何意见或建议可联系处理。小编QQ:384754419,请注明来意。