// 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): 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); begin WriteLn(Format('%0:s.Count = %1:d %0:s = %2:s', [AName, AHashSet.Count, SetToStr(AHashSet)])); end; var LowNumbers: THashSet; HighNumbers: THashSet; i: Integer; begin LowNumbers := THashSet.Create; HighNumbers := THashSet.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.