Hallo,
wir stellen gerade ältere Anwendungen um, die compilieren unter D7 und laufen seit Jahren reibungslos.
Nun unter D11.3 kriegen wir Bereichsüberschreitungen im folgenden Fall:
Man hat ein Array, 32 Einträge, es ist als Array of TColor definiert.
Jetzt wird das untypisiert übergeben, zum so
Code:
const TMyColors: Array of TColor;
procedure Foo(const Colors; Count: Integer)
begin
For i := 0 To Pred(Count) Do
TMyColors(Colors)[i] := clBlack;
end;
Der erste Eintrag geht noch, beim nächsten crasht es. Wir haben es jetzt so gelöst, das wir das jetzt mal typisiert übergeben, aber es wäre interessant zu wissen, warum es nicht mehr geht.
Das zweite Problem war, dass man (wenn auch vllt. fälschlicherweise) einem Word ein Longint zuweist, das unter Delphi 7 ging, der obere Beweich dann halt abgeschnitten wird. Unter 11.3 crasht es :O