Overloading operator IN lazarus / 21-General ---------------------------------------------------------------------- domasz · 2025-04-12 05:20 I want something like this: Code: Pascal  [Select][+][-]window.onload = function(){var x1 = document.getElementById("main_content_section"); if (x1) { var x = document.getElementsByClassName("geshi");for (var i = 0; i var hey: String;begin  hey := 'one';  if hey in ['one', 'two'] then Exit; I tried: Code: Pascal  [Select][+][-]window.onload = function(){var x1 = document.getElementById("main_content_section"); if (x1) { var x = document.getElementsByClassName("geshi");for (var i = 0; i operator in (A: String; const B: array of const): boolean;begin  Result := False;end; Not ideal solution: Code: Pascal  [Select][+][-]window.onload = function(){var x1 = document.getElementById("main_content_section"); if (x1) { var x = document.getElementsByClassName("geshi");for (var i = 0; i function Group(const Ar: array of String): TStringArray;var i: Integer;begin  SetLength(Result, High(Ar)+1);   for i:=0 to High(Ar) do Result[i] := Ar[i];end; operator in (A: String; B: TStringArray): Boolean;var i: Integer;begin  for i:=0 to Length(B)-1 do    if B[i] = A then Exit(True);   Result := False;end;    if hey in Group(['one', 'two']) How do I overload IN operator? ---------------------------------------------------------------------- cdbc · 2025-04-12 05:33 Hi Nah, instead you should use 'IndexStr' or 'IndexText' from 'StrUtils', in a case statement, like this:Code: Pascal  [Select][+][-]window.onload = function(){var x1 = document.getElementById("main_content_section"); if (x1) { var x = document.getElementsByClassName("geshi");for (var i = 0; i var hey: String;begin  hey := 'one';  case IndexText(hey,['one','two','three']) of    0: exit; // 'one'    1: Caption:= 'Two';    2: showmessage('Three');  end;end; /// edited later ///or   case IndexStr(hey,Group) of    0: /// your stuff  ...  end; Regards Benny ---------------------------------------------------------------------- domasz · 2025-04-12 05:42 Thanks, Benny but that looks terrible. I want something pretty ---------------------------------------------------------------------- cdbc · 2025-04-12 05:50 Hi No worries, but be warned: 'array of const' is a whole other can of worms to open... But Hey, it's your party man... Regards Benny ---------------------------------------------------------------------- domasz · 2025-04-12 06:06 Code: Pascal  [Select][+][-]window.onload = function(){var x1 = document.getElementById("main_content_section"); if (x1) { var x = document.getElementsByClassName("geshi");for (var i = 0; i function Group(A: String; B: String = ''; C: String = ''; D: String = ''; E: String = ''; F: String = ''; G: String = ''; H: String = ''; I: String = ''; J: String = ''): TStringArray;var ii: Integer;    Ar: TStringArray;    Len: Integer;begin  Ar := TStringArray.Create(A,B,C,D,E, F,G,H,I,J);   for ii:=9 downto 1 do begin    if Ar[ii] <> '' then begin        Len := ii+1;        break;      end;  end;   SetLength(Result, Len);   for ii:=0 to Len-1 do Result[ii] := Ar[ii];end; operator in (A: String; B: TStringArray): Boolean;var i: Integer;begin  for i:=0 to Length(B)-1 do    if B[i] = A then Exit(True);   Result := False;end; Code: Pascal  [Select][+][-]window.onload = function(){var x1 = document.getElementById("main_content_section"); if (x1) { var x = document.getElementsByClassName("geshi");for (var i = 0; i   if hey in Group('one', 'two') then It's slow but isn't it pretty? ---------------------------------------------------------------------- egsuh · 2025-04-12 08:42 Why not following? This works. Code: Pascal  [Select][+][-]window.onload = function(){var x1 = document.getElementById("main_content_section"); if (x1) { var x = document.getElementsByClassName("geshi");for (var i = 0; i operator in (a:string; b:array of string) : boolean; implementation operator in(a: string; b: array of string): boolean;var   c: string;begin   Result := false;   for c in b do if a=c then Exit(true);end; {$R *.lfm} { TForm1 } procedure TForm1.Button1Click(Sender: TObject);begin   showmessage(booltostr('this' in TStringArray(['this', 'that']), true));end; ---------------------------------------------------------------------- domasz · 2025-04-12 09:57 Because it's a Fiat Multipla to my Porsche