• Status: Solved
  • Priority: Medium
  • Security: Public
  • Views: 277
  • Last Modified:

Error E2158 compiling with Delphi XE10 Seattle

I use the function SetLength at several places in one Delphi application, without any compilation errors
Now I add something like this :

procedure MyProc(var M:array of string);
begin
.../...
SetLength(M,0);
.../...
end;

and get E2158 System unit out of date or corrupted : missing @Clr !!!
0
LeTay
Asked:
LeTay
1 Solution
 
sarabandeCommented:
var M:array of string
don't know much about pascal but would guess that the array passed was by reference. if so, it can't be shrinked (to 0 or at all) in case it is allocated on the stack. you may try to pass a dynamic array instead.

Sara
0
 
LeTayAuthor Commented:
Indeed, looks to be that
I used a workaround that ... works !
I defined

TRecArray = record
  Elements:array of string;

procedure MyProc (var M:TRecArray);
begin
.../...
  SetLength(M.Elements,0);
.../...
end;

Works !
0

Featured Post

[Webinar] Improve your customer journey

A positive customer journey is important in attracting and retaining business. To improve this experience, you can use Google Maps APIs to increase checkout conversions, boost user engagement, and optimize order fulfillment. Learn how in this webinar presented by Dito.

Tackle projects and never again get stuck behind a technical roadblock.
Join Now