From: <tw...@us...> - 2021-10-20 09:04:25
|
Revision: 3670 http://sourceforge.net/p/gexperts/code/3670 Author: twm Date: 2021-10-20 09:04:22 +0000 (Wed, 20 Oct 2021) Log Message: ----------- updated to latest version from OSDN (again) Modified Paths: -------------- trunk/ExternalSource/dzlib/u_dzErrorThread.pas trunk/ExternalSource/dzlib/u_dzStringUtils.pas trunk/ExternalSource/dzlib/u_dzVclUtils.pas Modified: trunk/ExternalSource/dzlib/u_dzErrorThread.pas =================================================================== --- trunk/ExternalSource/dzlib/u_dzErrorThread.pas 2021-10-20 08:41:49 UTC (rev 3669) +++ trunk/ExternalSource/dzlib/u_dzErrorThread.pas 2021-10-20 09:04:22 UTC (rev 3670) @@ -17,7 +17,7 @@ /// Do not override Execute, override doExecute instead. </summary> TErrorThread = class(TNamedThread) private - FExceptionClass: TClass; + FExceptionClass: ExceptClass; FErrorMessage: string; FHasFinished: Boolean; {$IF not Declared(SyncEvent)} @@ -45,6 +45,11 @@ function WaitFor(_TimeoutMsecs: DWORD; out _ReturnValue: DWORD): Boolean; overload; function WaitFor(_TimeoutMsecs: DWORD): Boolean; overload; ///<summary> + /// Checks whether the thread has terminated and if yes, checks whether an exception was the cause + /// for this and raises this exception. This method is meant to be called from the main thread + /// To make sure that an exception in a background thread does not go unnoticed. </summary> + procedure RaiseErrorException; + ///<summary> /// Calls Windows.TerminateThread to kill the thread without freeing resources. /// Read the documentation first! /// https://docs.microsoft.com/en-us/windows/win32/api/processthreadsapi/nf-processthreadsapi-terminatethread @@ -63,7 +68,7 @@ property ErrorMessage: string read FErrorMessage; ///<summary> /// Class of exception whose message was stored in ErrorMessage </summary> - property ExceptionClass: TClass read FExceptionClass; + property ExceptionClass: ExceptClass read FExceptionClass; end; implementation @@ -100,7 +105,7 @@ doExecute; except on e: Exception do begin - FExceptionClass := e.ClassType; + FExceptionClass := ExceptClass(e.ClassType); FErrorMessage := e.Message; UniqueString(FErrorMessage); end; @@ -118,6 +123,14 @@ end; end; +procedure TErrorThread.RaiseErrorException; +begin + if HasFinished then begin + if Assigned(FExceptionClass) then + raise FExceptionClass.Create(Self.FErrorMessage + ' in ' + Self.Classname); + end; +end; + function TErrorThread.WaitFor(_TimeoutMsecs: DWORD): Boolean; var Dummy: DWORD; Modified: trunk/ExternalSource/dzlib/u_dzStringUtils.pas =================================================================== --- trunk/ExternalSource/dzlib/u_dzStringUtils.pas 2021-10-20 08:41:49 UTC (rev 3669) +++ trunk/ExternalSource/dzlib/u_dzStringUtils.pas 2021-10-20 09:04:22 UTC (rev 3670) @@ -417,7 +417,7 @@ ///<summary> /// Split string s into the list of substrings delimited by any of the given delimiters /// NOTE: Duplicate delimiters are ignored, so 'abc def' will be split into two strings (which you -/// would expect), but also 'abc'#9#9'def' is two words (which you might not expect) +/// would expect), but also 'abc'#9#9'def' is two strings (which you might not expect) /// @param sl is the stringlist in which to return the result. If it is not empty, the /// new strings will be appended to the existing content. /// @param s is the string to split @@ -429,7 +429,7 @@ ///<summary> /// Split string s into the array of substrings delimited by any of the given delimiters /// NOTE: Duplicate delimiters are ignored, so 'abc def' will be split into two strings (which you -/// would expect), but also 'abc'#9#9'def' is two words (which you might not expect) +/// would expect), but also 'abc'#9#9'def' is two strings (which you might not expect) /// @param s is the string to split /// @param Delimiters is a string/array of char containing all delimiter characters /// @returns a TStringArray with the parts </summary> Modified: trunk/ExternalSource/dzlib/u_dzVclUtils.pas =================================================================== --- trunk/ExternalSource/dzlib/u_dzVclUtils.pas 2021-10-20 08:41:49 UTC (rev 3669) +++ trunk/ExternalSource/dzlib/u_dzVclUtils.pas 2021-10-20 09:04:22 UTC (rev 3670) @@ -41,7 +41,8 @@ ComObj, u_dzTranslator, u_dzDateUtils, // we need this for $IF Declared(TryIso2Time) - u_dzTypes; + u_dzTypes, + u_dzVersionInfo; var WM_WINDOW_PROC_HOOK_HELPER: Word = 0; // initialized on startup using RegisterWindowMessage @@ -1384,6 +1385,10 @@ ///<summary> gets the file version from the executable's version information </summary> function TApplication_GetFileVersion: string; +///<summary> gets the file version from the executable's version information +/// Information can be limited to a certain level of detail </summary> +function TApplication_GetFileVersionStr(_Parts: TVersionParts = vpMajorMinorRevision): string; + ///<summary> Returns the ini-file with the application name </summary> function TApplication_GetDefaultIniFileName: string; @@ -1765,7 +1770,6 @@ {$ENDIF dzMESSAGEDEBUG} u_dzSortProvider, u_dzLineBuilder, - u_dzVersionInfo, u_dzTypesUtils, u_dzOsUtils, u_dzStringArrayUtils; @@ -4754,6 +4758,16 @@ Result := VersionInfo.FileVersion; end; +function TApplication_GetFileVersionStr(_Parts: TVersionParts = vpMajorMinorRevision): string; +var + VersionInfo: IFileInfo; +begin + Result := ''; + VersionInfo := TApplicationInfo.Create; + if VersionInfo.HasVersionInfo then + Result := VersionInfo.FileVersionStr(_Parts); +end; + procedure TControl_SetConstraints(_Control: TControl; _Which: TControlConstraintsSet); begin if ccMinWidth in _Which then This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |