fpc/packages/rtl-generics/examples/thashset/thashset_exceptwith.lpr
michael d4f2a593d4 * Update from Maciej Izak, bug ID #33921
git-svn-id: trunk@39345 -
2018-06-29 20:43:21 +00:00

55 lines
1.1 KiB
ObjectPascal

// Generic types for NewPascal.org and FPC!
// by Maciej Izak (hnb), 2018
// sponsored by Sphere 10 Software (http://sphere10.com)
program thashset_exceptwith;
{$MODE DELPHI}
{$APPTYPE CONSOLE}
uses
SysUtils, Generics.Collections;
function SetToStr(ASet: THashSet<Integer>): string;
var
i: Integer;
begin
Result := '(';
for i in ASet do
Result := Result + ' ' + IntToStr(i);
Result := Result + ' )';
end;
procedure WriteLnHashSet(const AName: string; AHashSet: THashSet<Integer>);
begin
WriteLn(Format('%0:s.Count = %1:d %0:s = %2:s', [AName, AHashSet.Count, SetToStr(AHashSet)]));
end;
var
LowNumbers: THashSet<Integer>;
HighNumbers: THashSet<Integer>;
i: Integer;
begin
LowNumbers := THashSet<Integer>.Create;
HighNumbers := THashSet<Integer>.Create;
for i := 0 to 5 do
LowNumbers.Add(i);
for i := 3 to 9 do
HighNumbers.Add(i);
WriteLnHashSet('LowNumbers', LowNumbers);
WriteLnHashSet('HighNumbers', HighNumbers);
WriteLn('< HighNumbers ExceptWith LowNumbers >');
HighNumbers.ExceptWith(LowNumbers);
WriteLnHashSet('HighNumbers', HighNumbers);
HighNumbers.Free;
LowNumbers.Free;
ReadLn;
end.