Ich glaube, du hast nicht verstanden, was dir versucht wird zu erklären. In
ASM baut man schleifen so auf, dass man die Zählvariable in ein Register packt, dieses immer dekrementiert und auf null prüft. Ein Register auf null prüfen ist einfacher und damit performanter als zwei von null verschiedenen Werte mit einander zu vergleichen.
So, wenn der Delphi Kompiler jetzt sieht, dass es unerheblich ist, wie rumm die Schleife läuft, dann optimiert er den Code so, dass oben beschriebener
ASM bei rauskommt. Natürlcih hat das zur Folge, dass die Schleife rückwärts läuft. Da es keinen Einfluss auf den Code hat, ist es egal. So bald der Kompiler sieht, dass der Wert der Zählvariablen in der Schleife eine Rolle spilet, ein einfaches
ShowMessage reicht da schon, optimiert er nicht mehr.
Warum also willst du an deinem Code was ändern? Wenn du nicht willst, dass dein Programm performant und speicherschonend läuft, dann schlate die Optimierung ab.