Bei normalen For-Schleifen wird diese entweder voll durchlaufen oder gar nicht (weiß gar nicht, wie es aktuell mit "for I := 1 to 0 do ..." steht).
Dass bei generischen Listen der Enumerator freigegeben wird habe ich auch schon mal nachvollzogen.
M.E. müsste der Compiler/Debugger das aber intern regeln (so wie bei "while false do begin end").
Für MEINE ANWENDUNG (und die will ich ja debuggen) ist mir ja Wurscht, was der Compiler da intern veranstaltet.
Mit Assembler will ich mich nicht herum schlagen. Deshalb nutze ich ja Delphi.
Ich finde solche unlogischen Verhaltensweisen halt extrem nervig.
Vereinfachen tun sie die Arbeit jedenfalls nicht.
[EDIT]
Jetzt habe ich noch zwei klare Bugs gefunden:
- Wenn eine generische Liste mit einem Eintrag freigegeben wird knallt es, weil zwei Einträge verglichen werden (warum auch immer).
- Das Freigeben eines Comparers verursacht eine
Exception (Eurekalog Prof. kann das aber nicht näher auflösen)
(Darüber hinaus habe ich keine Möglichkeit gefunden, einen zugewiesenen Comparer aus einer Liste wieder zu entfernen.)
Ich bin sicher, dass die Fehler nicht durch mich verursacht werden. Kann natürlich möglicherweise in neueren Bezahlversionen schon gefixt sein.