ProgParams.h 2.1 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748
  1. //---------------------------------------------------------------------------
  2. #ifndef ProgParamsH
  3. #define ProgParamsH
  4. //---------------------------------------------------------------------------
  5. enum TParamType {ptParam, ptSwitch};
  6. //---------------------------------------------------------------------------
  7. class TProgramParams
  8. {
  9. public:
  10. static TProgramParams * __fastcall Instance();
  11. TProgramParams();
  12. ~TProgramParams();
  13. bool __fastcall FindSwitch(const AnsiString Switch);
  14. bool __fastcall FindSwitch(const AnsiString Switch, AnsiString & Value);
  15. bool __fastcall FindSwitch(const AnsiString Switch, int & ParamsStart,
  16. int & ParamsCount);
  17. bool __fastcall FindSwitch(const AnsiString Switch, TStrings * Params,
  18. int ParamsMax = -1);
  19. void __fastcall ParamsProcessed(int Position, int Count);
  20. AnsiString __fastcall SwitchValue(const AnsiString Switch, const AnsiString Default = "");
  21. __property AnsiString SwitchValueDelimiters = { read=FSwitchValueDelimiters, write=FSwitchValueDelimiters };
  22. __property bool IgnoreCase = { read=FIgnoreCase, write=FIgnoreCase };
  23. __property Integer ParamCount = { read=GetParamTypeCount, index=ptParam };
  24. __property Integer SwitchCount = { read=GetParamTypeCount, index=ptSwitch };
  25. __property Integer Count = { read=GetCount };
  26. __property AnsiString Param[Integer Index] = { read=GetParam };
  27. __property AnsiString SwitchMarks = { read=FSwitchMarks, write=FSwitchMarks };
  28. protected:
  29. TParamType __fastcall ParamType(Integer Index, AnsiString & Value);
  30. bool __fastcall FindSwitch(const AnsiString Switch,
  31. AnsiString & Value, int & ParamsStart, int & ParamsCount);
  32. private:
  33. static TProgramParams * SInstance;
  34. AnsiString FSwitchMarks;
  35. AnsiString FSwitchValueDelimiters;
  36. TStrings * FParameters;
  37. bool FIgnoreCase;
  38. Integer FParamCount[2];
  39. Integer __fastcall GetParamTypeCount(int Type);
  40. Integer __fastcall GetCount();
  41. AnsiString __fastcall GetParam(Integer Index);
  42. void __fastcall ResetParamCount();
  43. };
  44. //---------------------------------------------------------------------------
  45. #endif