That’s expected. If you “use” Remobjects.Elements.RTL.Delphi, “String” maps tot he Delpgiu string type. which is not compatible with what the Main() method expects as parameter, which as tp be an array of native Strings.
But: if the compiler wouldn’t take the uses clause of the implementation part into account while in the interface part, this would not happen.
(As it was in older versions. I’ve never understood the decision to mix the uses parts together. For me it’s more clear and strict)
Yes, the types must match. But the error message should be more clear of what’s the problem is imho.
(And maybe the compiler should take precedence of the type which is used in the interface part. Not quite shure if that was in Delphi or older versions).
Anyway, it’s your decision…
Possibly; I’m not sure if we can make it much clearer, as the compiler really doesn’t “know” the underlying details, it just nows its not getting the type it expects, “String”, and this is a rather corner case scenario that a separate type was brought into cope that also happens to be called ‘String’, but in a different namespace.
That yes, in fact im surprised that you don’t get an error that the interface and implementation do not match…