Delphi Compiler Error
E2198 %s cannot be applied to a long string
Reason for the Error & Solution
It is not possible to use the standard function HIGH with long strings. The standard function HIGH can, however, be applied to old-style short strings.
Since long strings dynamically size themselves, no analog to the HIGH function can be used.
This error can be caused if you are porting a 16-bit application, in which case the only string type available was a short string. If this is the case, you can turn off the long strings with the $H command line switch or the long-form directive $LONGSTRINGS.
If the HIGH was applied to a string parameter, but you still wish to use long strings, you could change the parameter type to ‘openstring’.
program Produce; var i : Integer; s : String; begin s := 'Hello Developers of the World'; i := HIGH(s); end.
In the example above, the programmer attempted to apply the standard function HIGH to a long string variable. This cannot be done.
(*$LONGSTRINGS OFF*) program Solve; var i : Integer; s : String; begin s := 'Hello Developers of the World'; i := HIGH(s); end.
By disabling long string parameters, the application of HIGH to a string variable is now allowed.