From 8d6ec26138cc233b334c2555a6a2ba930a61bd59 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Micha=C3=ABl=20Van=20Canneyt?= Date: Sat, 21 Aug 2021 09:13:06 +0200 Subject: [PATCH] * Fix by Mark Paley to add IfThen for StringList and TStringDynArray. Issue #39314 (cherry picked from commit 52c8ac0ca065c516f3195a532d83a132ca3f7b7a) --- packages/rtl-objpas/src/inc/strutils.pp | 10 ++++++++++ rtl/objpas/classes/classes.inc | 9 +++++++++ rtl/objpas/classes/classesh.inc | 2 +- 3 files changed, 20 insertions(+), 1 deletion(-) diff --git a/packages/rtl-objpas/src/inc/strutils.pp b/packages/rtl-objpas/src/inc/strutils.pp index 791dec8930..de511901cf 100644 --- a/packages/rtl-objpas/src/inc/strutils.pp +++ b/packages/rtl-objpas/src/inc/strutils.pp @@ -74,6 +74,7 @@ Function AnsiReverseString(const AText: AnsiString): AnsiString;inline; Function StuffString(const AText: string; AStart, ALength: Cardinal; const ASubText: string): string; Function RandomFrom(const AValues: array of string): string; overload; Function IfThen(AValue: Boolean; const ATrue: string; const AFalse: string = ''): string; overload; +Function IfThen(AValue: Boolean; const ATrue: TStringDynArray; const AFalse: TStringDynArray = nil): TStringDynArray; overload; function NaturalCompareText (const S1 , S2 : string ): Integer ; function NaturalCompareText(const Str1, Str2: string; const ADecSeparator, AThousandSeparator: Char): Integer; @@ -1228,6 +1229,15 @@ begin result:=afalse; end; +Function IfThen(AValue: Boolean; const ATrue: TStringDynArray; const AFalse: TStringDynArray = nil): TStringDynArray; overload; + +begin + if avalue then + result:=atrue + else + result:=afalse; +end; + function NaturalCompareText(const Str1, Str2: string; const ADecSeparator, AThousandSeparator: Char): Integer; { NaturalCompareBase compares strings in a collated order and diff --git a/rtl/objpas/classes/classes.inc b/rtl/objpas/classes/classes.inc index 78a37ec6f3..880718bf4d 100644 --- a/rtl/objpas/classes/classes.inc +++ b/rtl/objpas/classes/classes.inc @@ -2453,6 +2453,15 @@ end; { Utility routines } + +Function IfThen(AValue: Boolean; const ATrue: TStringList; const AFalse: TStringList = nil): TStringList; overload; +begin + if avalue then + result:=atrue + else + result:=afalse; +end; + function LineStart(Buffer, BufPos: PChar): PChar; begin diff --git a/rtl/objpas/classes/classesh.inc b/rtl/objpas/classes/classesh.inc index 22bee9e8cb..0617a6fc16 100644 --- a/rtl/objpas/classes/classesh.inc +++ b/rtl/objpas/classes/classesh.inc @@ -2322,4 +2322,4 @@ function LineStart(Buffer, BufPos: PChar): PChar; procedure BinToHex(BinValue, HexValue: PChar; BinBufSize: Integer); function HexToBin(HexValue, BinValue: PChar; BinBufSize: Integer): Integer; function ExtractStrings(Separators, WhiteSpace: TSysCharSet; Content: PChar; Strings: TStrings; AddEmptyStrings : Boolean = False): Integer; - +Function IfThen(AValue: Boolean; const ATrue: TStringList; const AFalse: TStringList = nil): TStringList; overload;