| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300 | 
							- //---------------------------------------------------------------------------
 
- #ifndef CommonH
 
- #define CommonH
 
- //---------------------------------------------------------------------------
 
- #define EXCEPTION throw ExtException(NULL, L"")
 
- #define THROWOSIFFALSE(C) { if (!(C)) RaiseLastOSError(); }
 
- #define SAFE_DESTROY_EX(CLASS, OBJ) { CLASS * PObj = OBJ; OBJ = NULL; delete PObj; }
 
- #define SAFE_DESTROY(OBJ) SAFE_DESTROY_EX(TObject, OBJ)
 
- #define NULL_TERMINATE(S) S[LENOF(S) - 1] = L'\0'
 
- #define ASCOPY(dest, source) \
 
-   { \
 
-     AnsiString CopyBuf = source; \
 
-     strncpy(dest, CopyBuf.c_str(), LENOF(dest)); \
 
-     dest[LENOF(dest)-1] = '\0'; \
 
-   }
 
- #define FORMAT(S, F) Format(S, ARRAYOFCONST(F))
 
- #define FMTLOAD(I, F) FmtLoadStr(I, ARRAYOFCONST(F))
 
- #define LENOF(x) ( (sizeof((x))) / (sizeof(*(x))))
 
- #define FLAGSET(SET, FLAG) (((SET) & (FLAG)) == (FLAG))
 
- #define FLAGCLEAR(SET, FLAG) (((SET) & (FLAG)) == 0)
 
- #define FLAGMASK(ENABLE, FLAG) ((ENABLE) ? (FLAG) : 0)
 
- #define SWAP(TYPE, FIRST, SECOND) \
 
-   { TYPE __Backup = FIRST; FIRST = SECOND; SECOND = __Backup; }
 
- //---------------------------------------------------------------------------
 
- extern const wchar_t EngShortMonthNames[12][4];
 
- extern const char Bom[3];
 
- extern const wchar_t TokenPrefix;
 
- extern const wchar_t NoReplacement;
 
- extern const wchar_t TokenReplacement;
 
- extern const UnicodeString LocalInvalidChars;
 
- extern const UnicodeString PasswordMask;
 
- //---------------------------------------------------------------------------
 
- UnicodeString ReplaceChar(UnicodeString Str, wchar_t A, wchar_t B);
 
- UnicodeString DeleteChar(UnicodeString Str, wchar_t C);
 
- void PackStr(UnicodeString &Str);
 
- void PackStr(RawByteString &Str);
 
- void __fastcall Shred(UnicodeString & Str);
 
- UnicodeString AnsiToString(const RawByteString & S);
 
- UnicodeString AnsiToString(const char * S, size_t Len);
 
- UnicodeString MakeValidFileName(UnicodeString FileName);
 
- UnicodeString RootKeyToStr(HKEY RootKey);
 
- UnicodeString BooleanToStr(bool B);
 
- UnicodeString BooleanToEngStr(bool B);
 
- UnicodeString DefaultStr(const UnicodeString & Str, const UnicodeString & Default);
 
- UnicodeString CutToChar(UnicodeString &Str, wchar_t Ch, bool Trim);
 
- UnicodeString CopyToChars(const UnicodeString & Str, int & From, UnicodeString Chs, bool Trim,
 
-   wchar_t * Delimiter = NULL, bool DoubleDelimiterEscapes = false);
 
- UnicodeString CopyToChar(const UnicodeString & Str, wchar_t Ch, bool Trim);
 
- UnicodeString DelimitStr(UnicodeString Str, UnicodeString Chars);
 
- UnicodeString ShellDelimitStr(UnicodeString Str, wchar_t Quote);
 
- UnicodeString ExceptionLogString(Exception *E);
 
- UnicodeString __fastcall MainInstructions(const UnicodeString & S);
 
- UnicodeString __fastcall MainInstructionsFirstParagraph(const UnicodeString & S);
 
- bool ExtractMainInstructions(UnicodeString & S, UnicodeString & MainInstructions);
 
- UnicodeString RemoveMainInstructionsTag(UnicodeString S);
 
- UnicodeString UnformatMessage(UnicodeString S);
 
- UnicodeString RemoveInteractiveMsgTag(UnicodeString S);
 
- bool IsNumber(const UnicodeString Str);
 
- UnicodeString __fastcall SystemTemporaryDirectory();
 
- UnicodeString __fastcall GetShellFolderPath(int CSIdl);
 
- UnicodeString __fastcall StripPathQuotes(const UnicodeString Path);
 
- UnicodeString __fastcall AddPathQuotes(UnicodeString Path);
 
- void __fastcall SplitCommand(UnicodeString Command, UnicodeString &Program,
 
-   UnicodeString & Params, UnicodeString & Dir);
 
- UnicodeString __fastcall ValidLocalFileName(UnicodeString FileName);
 
- UnicodeString __fastcall ValidLocalFileName(
 
-   UnicodeString FileName, wchar_t InvalidCharsReplacement,
 
-   const UnicodeString & TokenizibleChars, const UnicodeString & LocalInvalidChars);
 
- UnicodeString __fastcall ExtractProgram(UnicodeString Command);
 
- UnicodeString __fastcall ExtractProgramName(UnicodeString Command);
 
- UnicodeString __fastcall FormatCommand(UnicodeString Program, UnicodeString Params);
 
- UnicodeString __fastcall ExpandFileNameCommand(const UnicodeString Command,
 
-   const UnicodeString FileName);
 
- void __fastcall ReformatFileNameCommand(UnicodeString & Command);
 
- UnicodeString __fastcall EscapePuttyCommandParam(UnicodeString Param);
 
- UnicodeString __fastcall ExpandEnvironmentVariables(const UnicodeString & Str);
 
- bool __fastcall ComparePaths(const UnicodeString & Path1, const UnicodeString & Path2);
 
- bool __fastcall CompareFileName(const UnicodeString & Path1, const UnicodeString & Path2);
 
- int __fastcall CompareLogicalText(const UnicodeString & S1, const UnicodeString & S2);
 
- bool __fastcall IsReservedName(UnicodeString FileName);
 
- UnicodeString __fastcall ApiPath(UnicodeString Path);
 
- UnicodeString __fastcall DisplayableStr(const RawByteString & Str);
 
- UnicodeString __fastcall ByteToHex(unsigned char B, bool UpperCase = true);
 
- UnicodeString __fastcall BytesToHex(const unsigned char * B, size_t Length, bool UpperCase = true, wchar_t Separator = L'\0');
 
- UnicodeString __fastcall BytesToHex(RawByteString Str, bool UpperCase = true, wchar_t Separator = L'\0');
 
- UnicodeString __fastcall CharToHex(wchar_t Ch, bool UpperCase = true);
 
- RawByteString __fastcall HexToBytes(const UnicodeString Hex);
 
- unsigned char __fastcall HexToByte(const UnicodeString Hex);
 
- bool __fastcall IsLowerCaseLetter(wchar_t Ch);
 
- bool __fastcall IsUpperCaseLetter(wchar_t Ch);
 
- bool __fastcall IsLetter(wchar_t Ch);
 
- bool __fastcall IsDigit(wchar_t Ch);
 
- bool __fastcall IsHex(wchar_t Ch);
 
- UnicodeString __fastcall DecodeUrlChars(UnicodeString S);
 
- UnicodeString __fastcall EncodeUrlChars(UnicodeString S);
 
- UnicodeString __fastcall EncodeUrlString(UnicodeString S);
 
- UnicodeString __fastcall EncodeUrlPath(UnicodeString S);
 
- UnicodeString __fastcall AppendUrlParams(UnicodeString URL, UnicodeString Params);
 
- bool __fastcall RecursiveDeleteFile(const UnicodeString FileName, bool ToRecycleBin);
 
- void __fastcall DeleteFileChecked(const UnicodeString & FileName);
 
- unsigned int __fastcall CancelAnswer(unsigned int Answers);
 
- unsigned int __fastcall AbortAnswer(unsigned int Answers);
 
- unsigned int __fastcall ContinueAnswer(unsigned int Answers);
 
- UnicodeString __fastcall LoadStr(int Ident, unsigned int MaxLength);
 
- UnicodeString __fastcall LoadStrPart(int Ident, int Part);
 
- UnicodeString __fastcall EscapeHotkey(const UnicodeString & Caption);
 
- bool __fastcall CutToken(UnicodeString & Str, UnicodeString & Token,
 
-   UnicodeString * RawToken = NULL);
 
- void __fastcall AddToList(UnicodeString & List, const UnicodeString & Value, const UnicodeString & Delimiter);
 
- bool __fastcall IsWinVista();
 
- bool __fastcall IsWin7();
 
- bool __fastcall IsWine();
 
- TLibModule * __fastcall FindModule(void * Instance);
 
- __int64 __fastcall Round(double Number);
 
- bool __fastcall TryRelativeStrToDateTime(UnicodeString S, TDateTime & DateTime);
 
- LCID __fastcall GetDefaultLCID();
 
- UnicodeString __fastcall DefaultEncodingName();
 
- UnicodeString __fastcall WindowsProductName();
 
- bool _fastcall GetWindowsProductType(DWORD & Type);
 
- bool __fastcall IsDirectoryWriteable(const UnicodeString & Path);
 
- UnicodeString __fastcall FormatNumber(__int64 Size);
 
- UnicodeString __fastcall FormatSize(__int64 Size);
 
- UnicodeString __fastcall ExtractFileBaseName(const UnicodeString & Path);
 
- TStringList * __fastcall TextToStringList(const UnicodeString & Text);
 
- TStrings * __fastcall CloneStrings(TStrings * Strings);
 
- UnicodeString __fastcall TrimVersion(UnicodeString Version);
 
- UnicodeString __fastcall FormatVersion(int MajovVersion, int MinorVersion, int Release);
 
- TFormatSettings __fastcall GetEngFormatSettings();
 
- int __fastcall ParseShortEngMonthName(const UnicodeString & MonthStr);
 
- // The defaults are equal to defaults of TStringList class (except for Sorted)
 
- TStringList * __fastcall CreateSortedStringList(bool CaseSensitive = false, System::Types::TDuplicates Duplicates = dupIgnore);
 
- UnicodeString __fastcall FindIdent(const UnicodeString & Ident, TStrings * Idents);
 
- //---------------------------------------------------------------------------
 
- typedef void __fastcall (__closure* TProcessLocalFileEvent)
 
-   (const UnicodeString FileName, const TSearchRec Rec, void * Param);
 
- bool __fastcall FileSearchRec(const UnicodeString FileName, TSearchRec & Rec);
 
- struct TSearchRecChecked : public TSearchRec
 
- {
 
-   UnicodeString Path;
 
- };
 
- int __fastcall FindCheck(int Result, const UnicodeString & Path);
 
- int __fastcall FindFirstUnchecked(const UnicodeString & Path, int Attr, TSearchRecChecked & F);
 
- int __fastcall FindFirstChecked(const UnicodeString & Path, int Attr, TSearchRecChecked & F);
 
- int __fastcall FindNextChecked(TSearchRecChecked & F);
 
- void __fastcall ProcessLocalDirectory(UnicodeString DirName,
 
-   TProcessLocalFileEvent CallBackFunc, void * Param = NULL, int FindAttrs = -1);
 
- //---------------------------------------------------------------------------
 
- enum TDSTMode
 
- {
 
-   dstmWin =  0, //
 
-   dstmUnix = 1, // adjust UTC time to Windows "bug"
 
-   dstmKeep = 2
 
- };
 
- bool __fastcall UsesDaylightHack();
 
- TDateTime __fastcall EncodeDateVerbose(Word Year, Word Month, Word Day);
 
- TDateTime __fastcall EncodeTimeVerbose(Word Hour, Word Min, Word Sec, Word MSec);
 
- TDateTime __fastcall SystemTimeToDateTimeVerbose(const SYSTEMTIME & SystemTime);
 
- TDateTime __fastcall UnixToDateTime(__int64 TimeStamp, TDSTMode DSTMode);
 
- TDateTime __fastcall ConvertTimestampToUTC(TDateTime DateTime);
 
- TDateTime __fastcall ConvertTimestampFromUTC(TDateTime DateTime);
 
- FILETIME __fastcall DateTimeToFileTime(const TDateTime DateTime, TDSTMode DSTMode);
 
- TDateTime __fastcall AdjustDateTimeFromUnix(TDateTime DateTime, TDSTMode DSTMode);
 
- void __fastcall UnifyDateTimePrecision(TDateTime & DateTime1, TDateTime & DateTime2);
 
- TDateTime __fastcall FileTimeToDateTime(const FILETIME & FileTime);
 
- __int64 __fastcall ConvertTimestampToUnix(const FILETIME & FileTime,
 
-   TDSTMode DSTMode);
 
- __int64 __fastcall ConvertTimestampToUnixSafe(const FILETIME & FileTime,
 
-   TDSTMode DSTMode);
 
- UnicodeString __fastcall FixedLenDateTimeFormat(const UnicodeString & Format);
 
- UnicodeString __fastcall StandardTimestamp(const TDateTime & DateTime);
 
- UnicodeString __fastcall StandardTimestamp();
 
- UnicodeString __fastcall StandardDatestamp();
 
- UnicodeString __fastcall FormatTimeZone(long Sec);
 
- UnicodeString __fastcall GetTimeZoneLogString();
 
- bool __fastcall AdjustClockForDSTEnabled();
 
- int __fastcall CompareFileTime(TDateTime T1, TDateTime T2);
 
- int __fastcall TimeToMSec(TDateTime T);
 
- int __fastcall TimeToSeconds(TDateTime T);
 
- int __fastcall TimeToMinutes(TDateTime T);
 
- //---------------------------------------------------------------------------
 
- template<class MethodT>
 
- MethodT __fastcall MakeMethod(void * Data, void * Code)
 
- {
 
-   MethodT Method;
 
-   ((TMethod*)&Method)->Data = Data;
 
-   ((TMethod*)&Method)->Code = Code;
 
-   return Method;
 
- }
 
- //---------------------------------------------------------------------------
 
- class TGuard
 
- {
 
- public:
 
-   __fastcall TGuard(TCriticalSection * ACriticalSection);
 
-   __fastcall ~TGuard();
 
- private:
 
-   TCriticalSection * FCriticalSection;
 
- };
 
- //---------------------------------------------------------------------------
 
- class TUnguard
 
- {
 
- public:
 
-   __fastcall TUnguard(TCriticalSection * ACriticalSection);
 
-   __fastcall ~TUnguard();
 
- private:
 
-   TCriticalSection * FCriticalSection;
 
- };
 
- //---------------------------------------------------------------------------
 
- //---------------------------------------------------------------------------
 
- #include <assert.h>
 
- #define ACCESS_VIOLATION_TEST { (*((int*)NULL)) = 0; }
 
- #ifndef _DEBUG
 
- #undef assert
 
- #define assert(p)   ((void)0)
 
- #define CHECK(p) p
 
- #define FAIL
 
- #define ALWAYS_TRUE(p) p
 
- #define ALWAYS_FALSE(p) p
 
- #define NOT_NULL(P) P
 
- #else
 
- #define CHECK(p) { bool __CHECK_RESULT__ = (p); assert(__CHECK_RESULT__); }
 
- #define FAIL assert(false)
 
- #define ALWAYS_TRUE(p) (p)
 
- #define ALWAYS_FALSE(p) (p)
 
- #define NOT_NULL(P) P
 
- #endif
 
- #define USEDPARAM(p) ((&p) == (&p))
 
- //---------------------------------------------------------------------------
 
- template<class T>
 
- class TValueRestorer
 
- {
 
- public:
 
-   __fastcall TValueRestorer(T & Target, const T & Value) :
 
-     FTarget(Target),
 
-     FValue(Value),
 
-     FArmed(true)
 
-   {
 
-   }
 
-   __fastcall TValueRestorer(T & Target) :
 
-     FTarget(Target),
 
-     FValue(Target),
 
-     FArmed(true)
 
-   {
 
-   }
 
-   void Release()
 
-   {
 
-     if (FArmed)
 
-     {
 
-       FTarget = FValue;
 
-       FArmed = false;
 
-     }
 
-   }
 
-   __fastcall ~TValueRestorer()
 
-   {
 
-     Release();
 
-   }
 
- protected:
 
-   T & FTarget;
 
-   T FValue;
 
-   bool FArmed;
 
- };
 
- //---------------------------------------------------------------------------
 
- class TAutoNestingCounter : public TValueRestorer<int>
 
- {
 
- public:
 
-   __fastcall TAutoNestingCounter(int & Target) :
 
-     TValueRestorer<int>(Target)
 
-   {
 
-     assert(Target >= 0);
 
-     ++Target;
 
-   }
 
-   __fastcall ~TAutoNestingCounter()
 
-   {
 
-     assert(!FArmed || (FTarget == (FValue + 1)));
 
-   }
 
- };
 
- //---------------------------------------------------------------------------
 
- class TAutoFlag : public TValueRestorer<bool>
 
- {
 
- public:
 
-   __fastcall TAutoFlag(bool & Target) :
 
-     TValueRestorer<bool>(Target)
 
-   {
 
-     assert(!Target);
 
-     Target = true;
 
-   }
 
-   __fastcall ~TAutoFlag()
 
-   {
 
-     assert(!FArmed || FTarget);
 
-   }
 
- };
 
- //---------------------------------------------------------------------------
 
- #endif
 
 
  |