From: <tw...@us...> - 2020-02-29 18:55:06
|
Revision: 3054 http://sourceforge.net/p/gexperts/code/3054 Author: twm Date: 2020-02-29 18:55:04 +0000 (Sat, 29 Feb 2020) Log Message: ----------- synced with dzlib from OSDN Modified Paths: -------------- trunk/ExternalSource/dzlib/dzlib.inc trunk/ExternalSource/dzlib/u_dzConvertUtils.pas trunk/ExternalSource/dzlib/u_dzFileUtils.pas trunk/ExternalSource/dzlib/u_dzGraphicsUtils.pas trunk/ExternalSource/dzlib/u_dzMiscUtils.pas trunk/ExternalSource/dzlib/u_dzNamedThread.pas trunk/ExternalSource/dzlib/u_dzSelectDirectoryFix.pas trunk/ExternalSource/dzlib/u_dzStringUtils.pas trunk/ExternalSource/dzlib/u_dzTranslator.pas trunk/ExternalSource/dzlib/u_dzTypes.pas trunk/ExternalSource/dzlib/u_dzVclUtils.pas Modified: trunk/ExternalSource/dzlib/dzlib.inc =================================================================== --- trunk/ExternalSource/dzlib/dzlib.inc 2020-02-02 19:16:34 UTC (rev 3053) +++ trunk/ExternalSource/dzlib/dzlib.inc 2020-02-29 18:55:04 UTC (rev 3054) @@ -9,12 +9,19 @@ {$DEFINE SUPPPORTS_BITMAP_SETSIZE} {$ENDIF} - {$IFDEF DELPHI2005_UP} // Delphi 6 and 7 understood deprecated, but not for types {$DEFINE SUPPORTS_DEPRECATED_TYPES} {$ENDIF} +{$IFDEF DELPHI7_UP} +{$IFNDEF DELPHI_2009_UP} +// Between Delphi 7 and 2007 Native(U)Int is wrongly declared as a 64 bit integer even though +// the compiler only supports 32 bits. +{$DEFINE NATIVE_INT_IS_WRONG} +{$ENDIF} +{$ENDIF} + {$IFDEF DELPHIX_TOKYO_UP} {$DEFINE FILECTRL_DIRECTORYEXISTS_IS_DEPRECATED} {$ENDIF} @@ -32,7 +39,11 @@ {$DEFINE THANDLESTREAM_CREATE_HANDLE_IS_THANDLE} {$ENDIF} +{$IFDEF DELPHIX_TOKYO_UP} +// this function probably already exist in earlier versions, I just run across a compile error for 10.2 Tokyo +{$DEFINE HAS_INTTOHEX_FUNCTION} +{$ENDIF} + {$WARN SYMBOL_PLATFORM OFF} {$WARN UNIT_PLATFORM OFF} - Modified: trunk/ExternalSource/dzlib/u_dzConvertUtils.pas =================================================================== --- trunk/ExternalSource/dzlib/u_dzConvertUtils.pas 2020-02-02 19:16:34 UTC (rev 3053) +++ trunk/ExternalSource/dzlib/u_dzConvertUtils.pas 2020-02-29 18:55:04 UTC (rev 3054) @@ -306,10 +306,19 @@ HoursPerDay = 24; MinutesPerDay = HoursPerDay * MinutesPerHour; SecondsPerDay = MinutesPerDay * SecondsPerMinute; - MillisecondsPerMinute = SecondsPerMinute * 1000; - MillisecondsPerHour = SecondsPerHour * 1000; - MillisecondsPerDay = SecondsPerDay * 1000; + MillisecondsPerSecond = 1000; + MillisecondsPerMinute = SecondsPerMinute * MillisecondsPerSecond; + MillisecondsPerHour = SecondsPerHour * MillisecondsPerSecond; + MillisecondsPerDay = SecondsPerDay * MillisecondsPerSecond; + MicrosecondsPerMillisecond = 1000; + MicrosecondsPerSecond = MillisecondsPerSecond * MicrosecondsPerMillisecond; + MicrosecondsPerMinute = Int64(SecondsPerMinute) * MicrosecondsPerSecond; + MicrosecondsPerHour = Int64(SecondsPerHour) * MicrosecondsPerSecond; + MicrosecondsPerDay = Int64(SecondsPerDay) * MicrosecondsPerSecond; +const + OneMicrosecond = 1 / MSecsPerDay / 1000; + ///<summary> /// returns a human readable string of the form '5d 23h' or '25h 15m' or '20m 21s' </summary> function SecondsToHumanReadableString(_Seconds: Int64): string; overload; Modified: trunk/ExternalSource/dzlib/u_dzFileUtils.pas =================================================================== --- trunk/ExternalSource/dzlib/u_dzFileUtils.pas 2020-02-02 19:16:34 UTC (rev 3053) +++ trunk/ExternalSource/dzlib/u_dzFileUtils.pas 2020-02-29 18:55:04 UTC (rev 3054) @@ -355,7 +355,7 @@ /// wraps the windows API function GetFullPathName </summary> class function GetFullPathName(const _fn: string): string; {$IFDEF SUPPORTS_STATIC} - static; + static; {$ENDIF} /// <summary> /// Returns a temporary filename. @@ -862,6 +862,18 @@ /// @returns the full filename of the created backup file /// @raises EBackupFailed if the copy operation failed even for the 1000th attempt. </summary> class function BackupFile(const _Filename: string; const _BackupDir: string = ''): string; + /// <summary> + /// Moves the file to a new, unique name, appending the current date and time to the base + /// file name. If the move operation fails, an underscore and a number will be appended + /// to the filename. That number will be incremented, until the copy operation succeeds + /// or it reaches 999. + /// See also TFileGenerationHandler and GenerateBackupFilename. + /// @param Filename is the name of the file to move + /// @param BackupDir is a directory in which to create the backup file, if empty + /// the same directory as the original file is used + /// @returns the full filename the file has been moved to. + /// @raises EBackupFailed if the copy operation failed even for the 1000th attempt. </summary> + class function MoveFileToBackup(const _Filename: string; const _BackupDir: string = ''): string; {$ENDIF} ///<summary> /// Generates a backup of the filename by appending the current date and time to the base @@ -871,7 +883,7 @@ /// @returns the full filename for the backup file </summary> class function GenerateBackupFilename(const _Filename: string; _BackupDir: string = ''): string; {$IFDEF SUPPORTS_STATIC} - static; + static; {$ENDIF} ///<summary> @@ -890,7 +902,7 @@ /// see also AppendDate and AppendDateAndTime </summary> class function AppendDateTime(const _Filename: string; _DateTime: TDateTime; _IncludeTime: Boolean): string; overload; {$IFDEF SUPPORTS_STATIC} - static; + static; {$ENDIF} ///<summary> @@ -897,7 +909,7 @@ /// Appends the current date to the filename in the format _YYYY-MM-DD </summary> class function AppendDate(const _Filename: string): string; overload; {$IFDEF SUPPORTS_STATIC} - static; + static; {$ENDIF} ///<summary> @@ -904,7 +916,7 @@ /// Appends the given date to the filename in the format _YYYY-MM-DD </summary> class function AppendDate(const _Filename: string; _Date: TDateTime): string; overload; {$IFDEF SUPPORTS_STATIC} - static; + static; {$ENDIF} ///<summary> @@ -911,7 +923,7 @@ /// Appends the current date and time to the filename in the format _YYYY-MM-DD_HH-MM-SS </summary> class function AppendDateAndTime(const _Filename: string): string; overload; {$IFDEF SUPPORTS_STATIC} - static; + static; {$ENDIF} ///<summary> @@ -918,7 +930,7 @@ /// Appends the given date and time to the filename in the format _YYYY-MM-DD_HH-MM-SS </summary> class function AppendDateAndTime(const _Filename: string; _DateTime: TDateTime): string; overload; {$IFDEF SUPPORTS_STATIC} - static; + static; {$ENDIF} /// <summary> @@ -1070,6 +1082,12 @@ end; type + // TFilename might not be this record, because there are multiple declarations of this type + // in the RTL and other libraries, so it depends on the units included and their order which + // one is used. TdzFilename will always be this record. + TdzFilename = TFilename; + +type TSearchPath = record private FValue: string; @@ -1940,6 +1958,36 @@ + BackupFilename.Extension; end; end; + +class function TFileSystem.MoveFileToBackup(const _Filename: string; const _BackupDir: string = ''): string; +var + i: Integer; + BackupFilename: TFilename; + LastError: Cardinal; + ErrorMessage: string; +begin + BackupFilename := GenerateBackupFilename(_Filename, _BackupDir); + Result := BackupFilename; + + ForceDir(ExtractFilePath(BackupFilename)); + + i := 0; + while not Self.MoveFileEx(_Filename, Result, [mfCopyAllowed], ehReturnFalse) do begin + Inc(i); + if i = 1000 then begin + LastError := GetLastError; + ErrorMessage := SysErrorMessage(LastError); + raise EBackupFailed.CreateFmt( + _('Failed to create a backup of "%s". Tried 1000 different file names based on "%s".') + + ' (%s)', + [_Filename, BackupFilename.Filename, ErrorMessage]); + end; + Result := BackupFilename.DirectoryBS + + BackupFilename.FilenameOnly + '_' + IntToStr(i) + + BackupFilename.Extension; + end; +end; + {$ENDIF} class function TFileSystem.ContainsWildcard(const _Mask: string): Boolean; @@ -2139,7 +2187,7 @@ class function TFileSystem.CopyMatchingFiles(const _Mask, _SrcDir, _DestDir: string; _Flags: TCopyFileFlagSet; _FilesSkipped: TStrings = nil): Integer; var - i: integer; + i: Integer; Files: TStringList; s: string; SrcDirBs: string; @@ -2151,7 +2199,7 @@ Files := TStringList.Create; try TSimpleDirEnumerator.Execute(SrcDirBs + _Mask, Files, [dfaHidden, dfaSysFile, dfaArchive]); - for i := 0 to Files.Count -1 do begin + for i := 0 to Files.Count - 1 do begin s := Files[i]; if Self.CopyFile(SrcDirBs + s, DestDirBS + s, _Flags) then Inc(Result) Modified: trunk/ExternalSource/dzlib/u_dzGraphicsUtils.pas =================================================================== --- trunk/ExternalSource/dzlib/u_dzGraphicsUtils.pas 2020-02-02 19:16:34 UTC (rev 3053) +++ trunk/ExternalSource/dzlib/u_dzGraphicsUtils.pas 2020-02-29 18:55:04 UTC (rev 3054) @@ -4,6 +4,8 @@ {$IFDEF OPTIMIZE_DZ_GRAPHIC_UTILS} {$OPTIMIZATION ON} +{$RANGECHECKS OFF} +{$OVERFLOWCHECKS OFF} {$ENDIF} {$IFOPT O-} // Optimization @@ -15,6 +17,14 @@ {$C-} // this is the short form for $ASSERTIONS OFF {$ENDIF} +{$IFOPT Q+} +{$MESSAGE WARN 'Overflow checking is on, consider turning it off for significantly better performance'} +{$ENDIF} + +{$IFOPT R+} +{$MESSAGE WARN 'Range checking is on, consider turning it off for significantly better performance'} +{$ENDIF} + {.$DEFINE dzUseGraphics32} interface @@ -28,6 +38,7 @@ GR32, // libs\graphics32\src {$ENDIF} u_dzTranslator, + u_dzTypes, u_dzConvertUtils, u_dzTypesUtils; @@ -440,9 +451,6 @@ inline; {$ENDIF} -type - TSingleMatrix = array of array of Single; - ///<summary> /// Sharpens a bitmap, pixelformat must be pf24bit /// @param SrcBmp is the input @@ -1525,10 +1533,6 @@ // original source: http://www.delphigeist.com/2009/09/blur-bitmap-algorithm.html // but heavily modified -type - TByteMatrix = array of array of Byte; - TBitMatrix = array of array of Boolean; - procedure BlurBuffer(const _In: TByteMatrix; out _out: TByteMatrix); var w: Integer; @@ -1852,6 +1856,9 @@ h := _SrcBmp.Height; TBitmap_SetSize(_DstBmp, w, h); + if h = 0 then + Exit; //==> + BytesPerLine := ((w * 8 * BytesPerPixel + 31) and not 31) div 8; Assert(BytesPerLine = Graphics.BytesPerScanline(w, BytesPerPixel * 8, 32)); @@ -1897,6 +1904,9 @@ _DstBmp.Palette := MakeGrayPalette; TBitmap_SetSize(_DstBmp, w, h); + if h = 0 then + Exit; //==> + BytesPerLine := ((w * 8 * BytesPerPixel + 31) and not 31) div 8; Assert(BytesPerLine = Graphics.BytesPerScanline(w, BytesPerPixel * 8, 32)); @@ -1942,6 +1952,9 @@ h := _SrcBmp.Height; TBitmap_SetSize(_DstBmp, w, h); + if h = 0 then + Exit; //==> + BytesPerLine := ((w * 8 * BytesPerPixel + 31) and not 31) div 8; Assert(BytesPerLine = Graphics.BytesPerScanline(w, BytesPerPixel * 8, 32)); @@ -1990,6 +2003,9 @@ h := _SrcBmp.Height; TBitmap_SetSize(_DstBmp, w, h); + if h = 0 then + Exit; //==> + BytesPerLine := ((w * 8 * BytesPerPixel + 31) and not 31) div 8; Assert(BytesPerLine = Graphics.BytesPerScanline(w, BytesPerPixel * 8, 32)); @@ -2039,6 +2055,9 @@ TBitmap_MakeMono8(_DstBmp); TBitmap_SetSize(_DstBmp, w, h); + if h = 0 then + Exit; //==> + BytesPerLineInput := ((w * 8 * BytesPerPixelInput + 31) and not 31) div 8; Assert(BytesPerLineInput = Graphics.BytesPerScanline(w, BytesPerPixelInput * 8, 32)); @@ -2086,6 +2105,9 @@ _DstBmp.Palette := MakeGrayPalette; TBitmap_SetSize(_DstBmp, w, h); + if h = 0 then + Exit; //==> + BytesPerLine := ((w * 8 * BytesPerPixel + 31) and not 31) div 8; Assert(BytesPerLine = Graphics.BytesPerScanline(w, BytesPerPixel * 8, 32)); @@ -2132,6 +2154,9 @@ _DstBmp.Palette := MakeGrayPalette; TBitmap_SetSize(_DstBmp, w, h); + if h = 0 then + Exit; //==> + BytesPerLine := ((w * 8 * BytesPerPixel + 31) and not 31) div 8; Assert(BytesPerLine = Graphics.BytesPerScanline(w, BytesPerPixel * 8, 32)); @@ -2262,14 +2287,8 @@ // add center pixel weighted by alpha AvgBrightness := (IntAlpha * CenterBrightness + $7FFF) shr 16 - AvgBrightness; - // ensure range - if AvgBrightness < 0 then - AvgBrightness := 0 - else if AvgBrightness > 255 then - AvgBrightness := 255; + DstPixel^ := ReduceToByte(AvgBrightness); - DstPixel^ := AvgBrightness; - Inc(DstPixel); Inc(SrcPixelTop); @@ -2391,24 +2410,10 @@ AvgGreen := (IntAlpha * p^.rgbtGreen + $7FFF) shr 16 - AvgGreen; AvgBlue := (IntAlpha * p^.rgbtBlue + $7FFF) shr 16 - AvgBlue; - // ensure range (this looks stupid, but avoids function calls) - if AvgRed < 0 then - AvgRed := 0 - else if AvgRed > 255 then - AvgRed := 255; - if AvgGreen < 0 then - AvgGreen := 0 - else if AvgGreen > 255 then - AvgGreen := 255; - if AvgBlue < 0 then - AvgBlue := 0 - else if AvgBlue > 255 then - AvgBlue := 255; - Inc(DstPixel); - DstPixel^.rgbtRed := AvgRed; - DstPixel^.rgbtGreen := AvgGreen; - DstPixel^.rgbtBlue := AvgBlue; + DstPixel^.rgbtRed := ReduceToByte(AvgRed); + DstPixel^.rgbtGreen := ReduceToByte(AvgGreen); + DstPixel^.rgbtBlue := ReduceToByte(AvgBlue); end; Inc(DstPixel); Inc(SrcPixels[1]); @@ -2527,7 +2532,7 @@ SrcPixelTop := PPixel(Integer(SrcPixelCenter) + BytesPerLine); SrcPixelBottom := PPixel(Integer(SrcPixelCenter) - BytesPerLine); - AlphaPtr := @(_AlphaMap[Row][0]); + AlphaPtr := @(_AlphaMap[Row][1]); for Column := 1 to WorkAreaWidth do begin CenterBrightness := SrcPixelCenter^; @@ -2553,14 +2558,8 @@ // add center pixel weighted by alpha AvgBrightness := (IntAlpha * CenterBrightness + $7FFF) shr 16 - AvgBrightness; - // ensure range - if AvgBrightness < 0 then - AvgBrightness := 0 - else if AvgBrightness > 255 then - AvgBrightness := 255; - // write into the target pixel - DstPixel^ := AvgBrightness; + DstPixel^ := ReduceToByte(AvgBrightness); Inc(DstPixel); @@ -2695,25 +2694,11 @@ AvgGreen := (IntAlpha * p^.rgbtGreen + $7FFF) shr 16 - AvgGreen; AvgBlue := (IntAlpha * p^.rgbtBlue + $7FFF) shr 16 - AvgBlue; - // ensure range (this looks stupid, but avoids function calls) - if AvgRed < 0 then - AvgRed := 0 - else if AvgRed > 255 then - AvgRed := 255; - if AvgGreen < 0 then - AvgGreen := 0 - else if AvgGreen > 255 then - AvgGreen := 255; - if AvgBlue < 0 then - AvgBlue := 0 - else if AvgBlue > 255 then - AvgBlue := 255; - // write into the target pixel Inc(DstPixel); - DstPixel^.rgbtRed := AvgRed; - DstPixel^.rgbtGreen := AvgGreen; - DstPixel^.rgbtBlue := AvgBlue; + DstPixel^.rgbtRed := ReduceToByte(AvgRed); + DstPixel^.rgbtGreen := ReduceToByte(AvgGreen); + DstPixel^.rgbtBlue := ReduceToByte(AvgBlue); end; Inc(DstPixel); Inc(SrcPixels[1]); @@ -2814,8 +2799,14 @@ cnt: Integer; BytesPerLine: Integer; begin + h := _bmp.Height; + if h = 0 then begin + Result := False; + Exit; //==> + end; + w := _bmp.Width; - h := _bmp.Height; + BytesPerLine := ((w * 8 * BytesPerPixel + 31) and not 31) div 8; Assert(BytesPerLine = Graphics.BytesPerScanline(w, BytesPerPixel * 8, 32)); @@ -2857,8 +2848,15 @@ cnt: Integer; BytesPerLine: Integer; begin + h := _bmp.Height; + + if h = 0 then begin + Result := False; + Exit; //==> + end; + w := _bmp.Width; - h := _bmp.Height; + BytesPerLine := ((w * 8 * BytesPerPixel + 31) and not 31) div 8; Assert(BytesPerLine = Graphics.BytesPerScanline(w, BytesPerPixel * 8, 32)); @@ -2903,8 +2901,15 @@ cnt: Integer; BytesPerLine: Integer; begin + h := _bmp.Height; + + if h = 0 then begin + Result := False; + Exit; //==> + end; + w := _bmp.Width; - h := _bmp.Height; + BytesPerLine := ((w * 8 * BytesPerPixel + 31) and not 31) div 8; Assert(BytesPerLine = Graphics.BytesPerScanline(w, BytesPerPixel * 8, 32)); Modified: trunk/ExternalSource/dzlib/u_dzMiscUtils.pas =================================================================== --- trunk/ExternalSource/dzlib/u_dzMiscUtils.pas 2020-02-02 19:16:34 UTC (rev 3053) +++ trunk/ExternalSource/dzlib/u_dzMiscUtils.pas 2020-02-29 18:55:04 UTC (rev 3054) @@ -17,6 +17,7 @@ unit u_dzMiscUtils; {$INCLUDE 'dzlib.inc'} +{.$INCLUDE 'jedi.inc'} interface @@ -78,11 +79,13 @@ ///<summary> converts a hexdump of an extended back to an extended value </summary> procedure HexDumpToExtended(const _s: string; var _Value: Extended); +{$IFNDEF HAS_INTTOHEX_FUNCTION} ///<summary> converts an integer to a 8 digit hex string </summary> function IntToHex(_Value: Integer): string; overload; ///<summary> converts an In64 to a 16 digit hex string </summary> function IntToHex(_Value: Int64): string; overload; +{$ENDIF HAS_INTTOHEX_FUNCTION} ///<summary> Converts an integer to a boolean. /// @param Int is the integer to convert @@ -514,6 +517,7 @@ end; end; +{$IFNDEF HAS_INTTOHEX_FUNCTION} function IntToHex(_Value: Integer): string; begin Result := IntToHex(_Value, SizeOf(_Value) * 2); @@ -523,6 +527,7 @@ begin Result := IntToHex(_Value, SizeOf(_Value) * 2); end; +{$ENDIF HAS_INTTOHEX_FUNCTION} type PStringDescriptor = ^TStringDescriptor; Modified: trunk/ExternalSource/dzlib/u_dzNamedThread.pas =================================================================== --- trunk/ExternalSource/dzlib/u_dzNamedThread.pas 2020-02-02 19:16:34 UTC (rev 3053) +++ trunk/ExternalSource/dzlib/u_dzNamedThread.pas 2020-02-29 18:55:04 UTC (rev 3054) @@ -36,9 +36,12 @@ protected FThreadName: string; ///<summary> - /// Calls SetThreadName with FThreadName </summary> - procedure SetName; virtual; + /// Calls SetName with FThreadName </summary> + procedure SetName; overload; virtual; ///<summary> + /// @note: Do *not* make this a class method! </summary> + procedure SetName(const _Name: string); overload; virtual; + ///<summary> /// Calls SetName </summary> procedure Execute; override; function GetThreadName: string; @@ -92,9 +95,14 @@ Result := FThreadName; end; +procedure TNamedThread.SetName(const _Name: string); +begin + SetThreadName(AnsiString(_Name)); +end; + procedure TNamedThread.SetName; begin - SetThreadName(AnsiString(FThreadName)); + SetName(FThreadName); end; initialization @@ -101,4 +109,3 @@ // set the name for the main thread to 'Main' SetThreadName('Main'); end. - Modified: trunk/ExternalSource/dzlib/u_dzSelectDirectoryFix.pas =================================================================== --- trunk/ExternalSource/dzlib/u_dzSelectDirectoryFix.pas 2020-02-02 19:16:34 UTC (rev 3053) +++ trunk/ExternalSource/dzlib/u_dzSelectDirectoryFix.pas 2020-02-29 18:55:04 UTC (rev 3054) @@ -4,6 +4,7 @@ unit u_dzSelectDirectoryFix; {$INCLUDE 'dzlib.inc'} +{.$INCLUDE 'jedi.inc'} interface @@ -11,6 +12,9 @@ Windows, SysUtils, FileCtrl, +{$IFDEF HAS_UNIT_SYSTEM_UITYPES} + UITypes, +{$ENDIF} Controls; {$IF not Declared(TSelectDirExtOpt)} Modified: trunk/ExternalSource/dzlib/u_dzStringUtils.pas =================================================================== --- trunk/ExternalSource/dzlib/u_dzStringUtils.pas 2020-02-02 19:16:34 UTC (rev 3053) +++ trunk/ExternalSource/dzlib/u_dzStringUtils.pas 2020-02-29 18:55:04 UTC (rev 3054) @@ -161,7 +161,9 @@ ///<summary> /// Replaces an existing extension in Name with Ext or adds Ext to Name if /// it does not have an extension. -/// Consider using TFileSystem.ChangeFileExtFull or .ChangeFileExtLast instead. </summary> +/// @param Name is the (file) name to which the extension is to be added. +/// @param Ext is the extension, Note that a dot (.) will be prefixed if there is none +/// NOTE: Consider using TFileSystem.ChangeFileExtFull or .ChangeFileExtLast instead. </summary> function ForceExtension(const _Name, _Ext: string): string; ///<summary> /// Returns only the filename (incl. extension) portion of Name. </summary> Modified: trunk/ExternalSource/dzlib/u_dzTranslator.pas =================================================================== --- trunk/ExternalSource/dzlib/u_dzTranslator.pas 2020-02-02 19:16:34 UTC (rev 3053) +++ trunk/ExternalSource/dzlib/u_dzTranslator.pas 2020-02-29 18:55:04 UTC (rev 3054) @@ -346,6 +346,10 @@ AddDomainForResourceString('delphi100'); {$ELSE}{$IFDEF DELPHIX_BERLIN} AddDomainForResourceString('delphi101'); +{$ELSE}{$IFDEF DELPHIX_TOKYO} + AddDomainForResourceString('delphi102'); +{$ELSE}{$IFDEF DELPHIX_RIO} + AddDomainForResourceString('delphi103'); {$ELSE} 'unknown Delphi version!'; {$ENDIF} @@ -364,6 +368,8 @@ {$ENDIF} {$ENDIF} {$ENDIF} +{$ENDIF} +{$ENDIF} {$IFNDEF console} // ignore these VCL properties / classes Modified: trunk/ExternalSource/dzlib/u_dzTypes.pas =================================================================== --- trunk/ExternalSource/dzlib/u_dzTypes.pas 2020-02-02 19:16:34 UTC (rev 3053) +++ trunk/ExternalSource/dzlib/u_dzTypes.pas 2020-02-29 18:55:04 UTC (rev 3054) @@ -25,6 +25,13 @@ TBytes = array of Byte; {$IFEND} +type + TByteMatrix = array of array of Byte; + TBitMatrix = array of array of Boolean; + + TSingleMatrix = array of array of Single; + TDoubleMatrix = array of array of Double; + implementation end. Modified: trunk/ExternalSource/dzlib/u_dzVclUtils.pas =================================================================== --- trunk/ExternalSource/dzlib/u_dzVclUtils.pas 2020-02-02 19:16:34 UTC (rev 3053) +++ trunk/ExternalSource/dzlib/u_dzVclUtils.pas 2020-02-29 18:55:04 UTC (rev 3054) @@ -30,8 +30,11 @@ Buttons, Menus, {$IFDEF HAS_UNIT_SYSTEM_ACTIONS} - System.Actions, + Actions, {$ENDIF} +{$IFDEF HAS_UNIT_SYSTEM_UITYPES} + UITypes, +{$ENDIF} ActnList, ComObj, u_dzTranslator, This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |