Hallo,
ich habe in einem
Unit-Test folgenden Code (auskommentierte Zeilen wurden für Debugging eingefügt):
Code:
procedure TestTTyp.TestProgrammZurrschiene;
var
Stanzprogramm240, Stanzprogramm840:TEinzelSchrittlist;
count: Integer;
z240,z840: Integer;
begin
SetupStandardBlech;
// z240:=FTypList[0].FilteredEinzelschritte[gWkz.Werkzeug['Zurr_240']].Count;
// z840:=FTypList[0].FilteredEinzelschritte[gWkz.Werkzeug['Zurr_840']].Count;
count:=FTypList[0].FilteredEinzelschritte[gWkz.Werkzeug['Zurr_240']].Count+
FTypList[0].FilteredEinzelschritte[gWkz.Werkzeug['Zurr_840']].Count;
// count:=z240+z840;
assert.areEqual(FTypList[0].ZurrschienenList.Count, Count);
FilteredEinzelschritte ist eine indexed property, die folgende Funktion aufruft:
Code:
function TTyp.GetFilteredEinzelschrittlist(Filter: TWerkzeug): TEinzelSchrittlist;
var
I, j: Integer;
begin
FFilteredStanzprogramm.Clear;
for I := 0 to GesamtSchrittlist.Count - 1 do
begin
for j := 0 to GesamtSchrittlist[i].EinzelschrittList.Count - 1 do
begin
if FGesamtSchrittlist[i].EinzelschrittList[j].Werkzeugname=Filter.Name then
FFilteredStanzprogramm.Add(FGesamtSchrittlist[i].EinzelschrittList[j])
end;
end;
result:=FFilteredStanzprogramm;
end;
Es gibt also eine Liste von Bearbeitungsschritten in einem Ablauf, die einzelnen Schritte verwenden unterschiedliche Werkzeuge (Werkzeuge=Objekte mit Namen und weiteren Eigenschaften).
Die Funktion soll mir aus der Gesamtliste die Schritte heraussuchen, die ein Werkzeug mit einem bestimmten Namen verwenden. Diese werden dann in eine zweite Liste eingefügt.
Meine Test-Liste enthält 3 x das Werkzeug Zurr_240 und 2 x das Werkzeug Zurr_840.
count sollte also im Test die Summe 5 ergeben, tatsächlich kommt aber jetzt 4 zurück.
Wenn ich im Debugger nachschaue, bzw. im Programm die Befehle aufsplitte, wie im auskommentierten Quelltext zu sehen, erhalte ich wieder das richtige Ergebnis.
Lief unter älteren Delphi-Versionen bisher auch. Nun habe ich das Projekt auf Tokyo 10.2.3 aktualisiert und bekomme das Problem.