yes, freestanding operators like that are supported in {$mode Delphi}, but note that Delphi itself does not have that feature. It is FreePascal specific. You put your operators in a separate unit, compile that in {$mode objfpc}. You can then use that unit in a program or other unit in {$mode delphi}
However, your example will not work and fail with "impossible overload" because there is already a compiler intrinsic with the same signature.
Quick example that will work:
unit ops;
{$mode objfpc}{$H+}
// this unit must be compiled in objfpc mode
interface
operator +(const left:string ; const right:integer):string;
implementation
operator +(const left:string ; const right:integer):string;
begin
writestr(Result, left,right);
end;
end.
You can subsequently use it in delphi mode like so:
{$mode delphi}{$H+}
uses ops;
var
a:string = 'test';
b:integer = 0;
begin
writeln(a+b);// prints 'test0'
end.
Maybe there is a {$Modeswitch xxx}to add it to {$mode delphi} but I either forgot or there isn't any..