StandardLibs.pas 2.0 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182838485868788899091929394959697
  1. unit StandardLibs;
  2. interface
  3. uses Classes, StandardLib, ZhAPI, ConfigDoc;
  4. type
  5. TStandardLibs = class
  6. private
  7. FConfigInfo: TConfigInfo;
  8. FLibs: TList;
  9. function GetStandardGclLib: TStandardLib;
  10. function GetStandardXmLib: TStandardLib;
  11. function FindLib(const AFileName: string): TStandardLib;
  12. function CreateLib(const AFileName: string): TStandardLib;
  13. procedure ClearLibs;
  14. procedure OpenDefaultStandardLibs;
  15. public
  16. constructor Create(AConfigInfo: TConfigInfo);
  17. destructor Destroy; override;
  18. function GetLib(const AFileName: string): TStandardLib;
  19. property StandardXmLib: TStandardLib read GetStandardXmLib;
  20. property StandardGclLib: TStandardLib read GetStandardGclLib;
  21. end;
  22. implementation
  23. { TStandardLibs }
  24. procedure TStandardLibs.ClearLibs;
  25. begin
  26. ClearObjects(FLibs);
  27. end;
  28. constructor TStandardLibs.Create(AConfigInfo: TConfigInfo);
  29. begin
  30. FConfigInfo := AConfigInfo;
  31. FLibs := TList.Create;
  32. OpenDefaultStandardLibs;
  33. end;
  34. function TStandardLibs.CreateLib(const AFileName: string): TStandardLib;
  35. begin
  36. Result := TStandardLib.Create;
  37. Result.Open(AFileName);
  38. FLibs.Add(Result);
  39. end;
  40. destructor TStandardLibs.Destroy;
  41. begin
  42. ClearLibs;
  43. FLibs.Free;
  44. inherited;
  45. end;
  46. function TStandardLibs.FindLib(const AFileName: string): TStandardLib;
  47. var
  48. I: Integer;
  49. begin
  50. for I := 0 to FLibs.Count - 1 do
  51. begin
  52. Result := TStandardLib(FLibs.List^[I]);
  53. if Result.FileName = AFileName then
  54. Exit;
  55. end;
  56. Result := nil;
  57. end;
  58. function TStandardLibs.GetLib(const AFileName: string): TStandardLib;
  59. begin
  60. Result := FindLib(AFileName);
  61. if Result = nil then
  62. Result := CreateLib(AFileName);
  63. end;
  64. function TStandardLibs.GetStandardGclLib: TStandardLib;
  65. begin
  66. Result := GetLib(FConfigInfo.StandardGclLib);
  67. end;
  68. function TStandardLibs.GetStandardXmLib: TStandardLib;
  69. begin
  70. Result := GetLib(FConfigInfo.StandardXmLib);
  71. end;
  72. procedure TStandardLibs.OpenDefaultStandardLibs;
  73. begin
  74. GetLib(FConfigInfo.StandardXmLib);
  75. GetLib(FConfigInfo.StandardGclLib);
  76. end;
  77. end.