<div dir="auto"><div><div class="gmail_extra"><div class="gmail_quote">Am 13.12.2017 02:37 schrieb "Fabio Luis Girardi" <<a href="mailto:fluisgirardi@gmail.com">fluisgirardi@gmail.com</a>>:<br type="attribution"><blockquote class="quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex"><div dir="ltr">Hi all!<div><br></div><div>I want to extend some operators in Freepascal. I want to achieve something like this:</div><div><br></div><div>if aStr in ['string item 1', 'string item 2', 'string item 3'] then</div><div>  ...</div><div>else</div><div>  ...;</div><div><br></div><div>Following the examples to overload operators, I wrote:</div><div><br></div><div><div>operator in (a:String; b:array of string):Boolean;</div><div>var</div><div>  c: Integer;</div><div>begin</div><div>  Result:=false;</div><div>  for c:=0 to High(b) do</div><div>    if b[c]=a then begin</div><div>      result:=true;</div><div>      exit;</div><div>    end;</div><div>end;</div></div><div><br></div><div>But when I try compile this piece of code:</div><div><br></div><div><div>if aStr in ['string item 1', 'string item 2', 'string item 3'] then</div><div>  ...</div><div>else</div><div>  ...;</div></div><div><br></div><div>I got:</div><div><br></div><div>Error: Ordinal expression expected</div></div></blockquote></div></div></div><div dir="auto"><br></div><div dir="auto">The problem is not the operator, but the array: before 3.1.1 the "[...]" operator if used outside a parameter that is an open array *always* generates a set. This only changed in trunk a few months ago so that the operator can be used as an array constructor as well. So for now you'd need to use an array variable on the right side. </div><div dir="auto"><br></div><div dir="auto">Regards, </div><div dir="auto">Sven </div><div dir="auto"></div></div>